c++ - 使用友元函数重载的 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+'不匹配
解决方案
Complex&
不会绑定到临时的,Complex const&
会。
每个+
返回一个临时的。
作为一般规则,您希望:
friend Complex operator + (Complex,const Complex &);
但这里有两个const&
就可以了。
推荐阅读
- visual-studio-code - Visual Studio Code - 禁用自动完成“<>”
- android - 如何在 QtWidgets 中使用 android 材质主题
- filter - Symfony 5 / EasyAdmin 3 / 尝试打开过滤器时出现异常
- python - Jira createmeta 端点 'issue/createmeta/{project_id}/issuetypes/{issue_type_id} 返回空值列表
- ios - IPHONEOS_DEPLOYMENT_TARGET 设置为 80,但范围是 9.0-14.5.99
- terminal - Neovim/Alacritty 没有显示正确的字符
- ms-media-foundation - 是否可以使用 Microsoft Windows Media Foundation 创建/编码可变帧率视频文件?
- javascript - 使用 Angular 通过 post 将文件上传/发送到 django REST
- r - 导入多个 .dta 文件,删除标记为 fomat 的 Haven,从 R 中所有导入的 dta 文件创建数据框
- excel - 更改以数组值开头的换行符的字体大小?