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日

悬赏问题

  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
  • ¥15 网上下载的3DMAX模型,不显示贴图怎么办
  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
  • ¥15 Mac(标签-IDE|关键词-File) idea
  • ¥15 潜在扩散模型的Unet特征提取
  • ¥15 iscsi服务无法访问,如何解决?
  • ¥15 感应式传感器制作的感应式讯响器
  • ¥15 如何使用SC92F8003固件库解析私有协议数据?
  • ¥15 如何在音频中嵌入字符串(水印)信息进行传递
  • ¥30 plc怎么以设计说明书申请软著