【发布时间】:2015-03-26 10:02:04
【问题描述】:
我知道标准对延长临时对象的生命周期有一个例外,基本上说在构造函数中绑定 const 引用不会延长生命周期,但这也适用于文字吗?例如:
class C {
private:
const int& ref;
public:
C(const int& in)
: ref{in}
{ }
};
如果我有一个函数返回这种类型的对象
C f() {
C c(2);
return c;
}
如果我知道绑定到文字,c.ref 的值会在调用者中未定义吗?
【问题讨论】:
-
答案可能取决于编译器是否为文字创建了一个全局静态值并指向该值,或者它是否创建了一个堆栈值来指向。可以去任何一种方式。
-
为什么不按值传递 int 呢?这样会更有效率。
-
@cppguy 这是一个非常小的实际问题示例。
-
@cppguy 认为
int类型可以是模板参数,如果这个例子稍微改写的话。
标签: c++ reference language-lawyer temporary object-lifetime