Tag: 朋友函数

你会在哪里使用一个朋友函数与静态成员函数?

当我们想要访问该类的私有成员时,我们将非成员函数作为一个类的朋友。 这使它具有与静态成员函数相同的访问权限。 两种select都会给你一个与该类的任何实例无关的函数。 我们何时必须使用朋友function? 我们何时必须使用静态函数? 如果两者都是解决问题的可行select,我们如何衡量其适宜性? 是否有一个应该是默认优先? 例如,当实现一个创build只有一个私有构造函数的类foo实例的工厂时,该工厂函数应该是foo一个静态成员(你可以调用foo::create() ),或者它应该是一个好友函数会调用create_foo() )?

运算符重载:成员函数与非成员函数?

我读过一个被声明为成员函数的重载运算符是不对称的,因为它只能有一个参数,而另一个自动传递的参数是'this'指针。 所以没有标准来比较它们。 另一方面,声明为朋友的重载运算符是对称的,因为我们传递了两个相同类型的参数,因此可以进行比较。 我的问题是,当我仍然可以比较指针的左值参考,为什么朋友首选? (使用不对称版本会得到与对称相同的结果)为什么STL算法只使用对称版本?