【发布时间】:2017-03-13 12:32:45
【问题描述】:
我需要对 const 引用做一些说明。
来自this link:
const Foo &myFoo = FuncBar();
const 引用延长了本地对象的寿命。但是当我检查 this link 尽管他们使用了 const 引用时
Sandbox(const string& n) : member(n) {}
字符串“四”的生命周期没有增加。
Sandbox sandbox(string("four"));
他们用了这个句子
只有本地 const 引用才能延长生命周期。
那么在第二个链接中,字符串“four”不是主函数本地的,常量引用n不应该延长它的寿命吗?
那么为什么第二个环节的寿命没有延长呢?
【问题讨论】:
-
“局部”,如“局部变量”。
-
您的问题现在并不是真正独立的,因为“四”等的定义隐藏在链接后面。可以edit里面的相关部分吗?
-
我的意思是,在第一个链接中,字符串“four”不是 main 函数的本地字符串,所以变量 n 是对“four”的本地 const 引用?
-
不同之处在于类中的
const在类中,而在其他代码中它在函数之外 - 如果您复制您要参考的代码,您的问题会更清楚跨度> -
第二个是类构造函数,它不是函数,因此没有 const 引用的局部变量绑定到 temp var。
标签: c++ pass-by-reference lifetime temporary-objects reference-binding