如果>被重载成了友元bai函数,则obj1>obj2被c++解释成:operator>(obj1,obj2)。
当程序没有显式地提供一个以本类或本类的引用为参数的赋值运算符重载函数时,编译器会自动提供一个。假设C++允许将赋值运算符重载函数定义为友元函数并且我们也确实这么做了,而且以类的引用为参数。
与此同时,在类内却没有显式提供一个以本类或本类的引用为参数的赋值运算符重载函数。由于友元函数并不属于这个类。
扩展资料:
虚函数必须是成员函数。如果f必须是虚函数,就让它成为c的成员函数。
operator>>;和operator<<;决不能是成员函数。如果f是operator>>;或operator<<;,让f成为非成员函数。如果f还需要访问c的非公有成员,让f成为c的友元函数。
只有非成员函数对最左边的参数进行类型转换。如果f需要对最左边的参数进行类型转换,让f成为非成员函数。如果f还需要访问c的非公有成员,让f成为c的友元函数。
其它情况下都声明为成员函数。如果以上情况都不是,让f成为c的成员函数。
参考资料来源:百度百科-友元函数
就是opeator++(obj,0)
运算符重载要么是成员函数重载,要么是非成员函数重载。而友元只是实现越权访问数据的一种途径, 书上也说明友元函数为非成员函数。因此这里我理解为后置非成员重载
我记得貌似前++和后++为了重载区分 一个是多一个参数的 我不知道是不是这个问题