为什么重载“+”运算符时不要friend,却一样可以运行?
来源:8-8 IO流基础
URN99
2020-12-04
例如:a=b+c时,c应该就是重载函数的参数const Complex& x,那既然要在b里面要访问c的_real和_image,不应该要跟重载io时一样加上friend吗?
我的理解就是b调用自身的函数+,将c作为参数传过去进行运算,不知道这样理解对不对?请老师指正!
写回答
1回答
-
quickzhao
2020-12-04
这里重载运算符"+"是成员函数,不需要friend。 成员函数内部是可以直接访问私有变量的。这里你说的理解是对的,这里其实b+c是不平等的,没有对称性。有的时候我们确实需要考虑对称性的问题,此时可以采用你说的
friend Complex operator+(const Complex &c1, const Complex &c2); 这时就需要使用友元函数了。因为没有一个主体的class对象存在。
00
相似问题