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 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看