我目前正在学习http://www.cplusplus.com教程,我在这里看到了这个部分:http://www.cplusplus.com/doc/tutorial/inheritance.html,它处理C++中的朋友函数和朋友类的主题。
我的问题是,什么时候在创建程序时使用友谊才是明智的呢?
我得到的唯一线索是文章中的一个例子,它演示了一个“复制”对象的朋友函数。
发布于 2008-12-15 00:49:52
在Marshall的C++常见问题解答中,有一些非常好的经验法则。
整件事都很好,但特别是看看“朋友是否违反了封装?”,看看正确使用它们的方法,以及什么时候最好拆分类并宣布它们为朋友。
发布于 2008-12-15 02:07:09
朋友函数的存在是为了将自由函数表示为类接口中的一个连续部分。在一些地方,空闲函数是类接口的一部分。示例:假设您有一个任意精度的类BigNum。以下是一些明显的朋友函数的候选人:
// binary operators where BigNum isn't the left-hand operand
BigNum operator+ (int, BigNum);
BigNum operator- (int, BigNum);
// stream operators
std::ostream &operator<< (std::ostream &os, const BigNum &num);
std::istream &operator>> (std::istream &is, BigNum &num);现在,考虑到这两个例子,在许多情况下二进制操作符不需要成为朋友(例如,我可以通过委托给int + BigNum来实现BigNum + int,这是一个成员函数,因此已经可以完全访问)。但是,这完全取决于您对性能的需求,以及您愿意通过类的公共成员函数公开什么。
发布于 2008-12-15 03:15:19
朋友类的一个很好的应用程序是纪念品设计模式。
https://stackoverflow.com/questions/367219
复制相似问题