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 R语言爬虫的时候元素和园代码不一样怎么解决呀
  • ¥15 VS2022多项目启动有问题
  • ¥15 SQL删除添加数据后序号不连续问题。
  • ¥15 首次运行OmniEvent运行报错
  • ¥15 有没有人知道这个问题怎么解决
  • ¥15 comsol电力电缆载流量仿真
  • ¥15 webSocket可以接TCP socket接口吗
  • ¥60 mpi并行出错,CFD++计算
  • ¥15 c#:vsto,powerpoint的外接程序中换主题颜色
  • ¥15 状态机/汽车转向灯/Sateflow