这两种重载,那种错了?

xliu2019 2003-11-27 12:15:35
如果声明AB类的加号运算的重载
第一种 AB operator + (AB &a,AB &b)
第二种 AB operator +(Ab &a);
一道单选,我觉得都对
而且 effective c ++ 中还介绍过两者的区别
...全文
35 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
noirchloe 2003-11-27
  • 打赏
  • 举报
回复
二是 +=
kdush 2003-11-27
  • 打赏
  • 举报
回复
废人,终于有见你发言了.呵呵,怎么还没变星呢?
好象大家的意见很不一样呀.
我还是同意houdy(苦练内功中)的观点.
废人,我爱我师,但我跟爱真理.哈哈!~!~!
Wolf0403 2003-11-27
  • 打赏
  • 举报
回复
一不好,二不对。
重载 operator + 的两种形势:作为成员函数的时候
AB& AB::operator +(const AB&){/*...*/; return *this;}
作为非成员函数的时候
AB operator + (const AB&, const AB&){/*...*/; return AB(/*...*/);} // 注意:返回值,不是引用。
abitz 2003-11-27
  • 打赏
  • 举报
回复
请注意:非成员operator != 友元
yuantao 2003-11-27
  • 打赏
  • 举报
回复
看在类内还是为友元了
在类内的话,第2是对的
为友元的话
第1个是对的
sungboy 2003-11-27
  • 打赏
  • 举报
回复
这要看重载出现在哪里!
第一个是非成员函数,可以是类的友元。
第二个是成员函数。
inline 2003-11-27
  • 打赏
  • 举报
回复
第一种重载错误!如果重载为类的友元就对了!
friend AB operator + (AB &a,AB &b);
第二种正确! 为重载为类成员函数的形式!
"+" 的左操作数默认来自当前调用者 *this
houdy 2003-11-27
  • 打赏
  • 举报
回复
第一种:非成员函数,可以是类的友元函数。
第二种:类的成员函数。
什么情况下使用非成员函数,什么情况下使用成员函数,这个要看你具体重载的操作的,有的操作赋还必须是成员函数,比如=操作符。具体的标准,<thinking in C++>中有一章专门将操作符重载,说的很清楚,可以看看。
abitz 2003-11-27
  • 打赏
  • 举报
回复
好像要看出现在那里吧?
第一种 AB operator + (AB &a,AB &b)
应该在于AB定义的同一个scope内
第二种 AB operator +(Ab &a);
应该在 scope AB::内

ryyy 2003-11-27
  • 打赏
  • 举报
回复
第二种可以用friend
gjer 2003-11-27
  • 打赏
  • 举报
回复
我觉得这样看你怎么定义的,要是看是不是类内和类外了
文斌 2003-11-27
  • 打赏
  • 举报
回复
前一种对,后一种无法使两个操作数相加,如果是+=的重载就对了

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧