首页 > 解决方案 > 使用友元函数重载的 C++ 运算符。尝试添加多个对象失败

问题描述

为什么编译器在第二种情况下显示“错误”?(我已经给出了完整程序的链接)为什么我必须使用 const 关键字?

第一种情况:

friend Complex operator + (const Complex &,const Complex &);

Complex c5 = c1+c2+c3+c4; 

第二种情况:

friend Complex operator + ( Complex &, Complex &); 

Complex c5 = c1+c2+c3+c4; 

第一种情况完整程序 - 我得到正确的输出

第二种情况完整程序 - 错误:'operator+'不匹配

标签: c++operator-overloadingoverloading

解决方案


Complex&不会绑定到临时的,Complex const&会。

每个+返回一个临时的。

作为一般规则,您希望:

friend Complex operator + (Complex,const Complex &);

但这里有两个const&就可以了。


推荐阅读