友元运算符obj++被c++编译器解释为( ). 要有详细解释 为什么不是opeator++(obj,0)

2025-01-05 08:46:08
推荐回答(3个)
回答1:

如果>被重载成了友元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的成员函数。

参考资料来源:百度百科-友元函数

回答2:

就是opeator++(obj,0)
运算符重载要么是成员函数重载,要么是非成员函数重载。而友元只是实现越权访问数据的一种途径, 书上也说明友元函数为非成员函数。因此这里我理解为后置非成员重载

回答3:

我记得貌似前++和后++为了重载区分 一个是多一个参数的 我不知道是不是这个问题