函数返回静态局部对象引用问题

待续_1006 2017-04-07 10:17:54


看图就可以了,已经描述的很清楚了
为什么B1,B2,B3中的num不相等,他们不都是同一静态局部对象的别名吗?
...全文
152 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻夢之葉 2017-04-07
  • 打赏
  • 举报
回复
每次取都是同一个实例,但是之后你赋值给了一个新的对象,每次num的值都增加了1 就比如更简明的例子 static int a = 1; ++a; int b = a; ++a; int c = a; b c 当完成拷贝之后是脱离了=右边的对象 回到你的题目: b1,b2,b3都是一个新的对象,内存地址也不会跟静态对象相同, 完成拷贝之后就脱离了静态对象,num的值也会发生应有的变化。
Saleayas 2017-04-07
  • 打赏
  • 举报
回复
Base &b1 = ...; 你获取的是唯一的,但是你用这个唯一的值来赋值了。 被赋值的不是唯一,使用引用就可以了。 你可以尝试定义 private 构造函数就可以看到区别了。
paschen 版主 2017-04-07
  • 打赏
  • 举报
回复
b1 b2 b3都是同一个变量的引用,所以他们的值都是相等的 但b1 b2 b3是3个不同的变量,他们的地址是不同的 你下面的printf输出的是地址

64,641

社区成员

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

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