为什么重载“+”运算符时不要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对象存在。

0
0

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程