m0_60797829 2021-08-22 21:08 采纳率: 61.1%
浏览 64
已结题

关于C++中重载运算符的问题

请问,为什么在一个类的内部重载运算符时,参数列表中只能有一个参数存在??
图片中是对 + 进行重载。明明使用时需要两个参数。 似乎,this这个指针指向了另一个本该出现的参数。
然而this不应该是正在被我们使用的对象的指针才对吗?
问题:
1.为什么在一个类的内部重载运算符时,参数列表中只能有一个参数存在,而在友元函数的情况下就可以两个?
2.既然参数列表只有一个参数,为什么在使用+时 依旧可以填充两个操作数?
3.this为什么会指向另一个本该出现在参数列表中的参数?
4.this这个指针到底指向什么?
img

  • 写回答

1条回答 默认 最新

  • Pliosauroidea 2021-08-22 21:17
    关注

    因为运算符重载的时候要在运算符两侧的对象中找对应的运算方法,此时对于此对象来说,他自身已经作为一个默认值被传入了,相当于对象A在其重载运算+中传入了参数B,或许可以等价的看做a.A+(B)
    重载+只能填写一个参数是因为+是个二元操作符,其中一个操作数已经被A占据,所以只需要传入另一个操作数B即可
    友元函数则是访问类中的属性,他可以显式的传入多个参数,因为友元函数本身可以不属于任何类,也就没有隐藏的this
    有帮助望采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月1日
  • 已采纳回答 10月24日
  • 修改了问题 8月22日
  • 创建了问题 8月22日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵