关于引用的返回值

yingbinchina 2010-01-18 04:08:16

在对操作符重载时,四则运算是不能返回引用的。

看到一个这样的解释:
(5)在另外的一些操作符中,却千万不能返回引用:+-*/ 四则运算符。它们不能返回引用,Effective C++[1]的Item23详细的讨论了这个问题。主要原因是这四个操作符没有side effect,因此,它们必须构造一个对象作为返回值,可选的方案包括:返回一个对象、返回一个局部变量的引用,返回一个new分配的对象的引用、返回一个静态对象引用。根据前面提到的引用作为返回值的三个规则,第2、3两个方案都被否决了。静态对象的引用又因为((a+b) == (c+d))会永远为true而导致错误。所以可选的只剩下返回一个对象了。

请问文中的:
静态对象的引用又因为((a+b) == (c+d))会永远为true而导致错误。
如何理解,请方便的话给出代码解释,谢谢!
...全文
85 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sj13426074890 2010-01-18
  • 打赏
  • 举报
回复
3 楼正解
traceless 2010-01-18
  • 打赏
  • 举报
回复
听taodm的

有书不看书,看网文,还有更迷惑的在等着呢

macrojj 2010-01-18
  • 打赏
  • 举报
回复
静态对象的引用又因为((a+b) == (c+d))会永远为true而导致错误。
如果 operator+ 返沪的是静态的

那么a+b c+d都是写到一个静态变量里的。 当然是真的咯
lovesi3344 2010-01-18
  • 打赏
  • 举报
回复
mark
up
taodm 2010-01-18
  • 打赏
  • 举报
回复
呃,你还是直接看《effective c++》那个item的原文吧,肯定比这个网文好理解多了。

64,643

社区成员

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

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