一般来说,这是讨论最多只能局部功能变量:什么是常数引用右值的类数据成员的生命周期?
void foo (const int &i)
{
// use i till foo() ends
}
foo(3);
但是,没有此规则适用于class
成员也?
struct A {
const int &a;
A() : a(3) {} // version 1
A (const int &i) : a(i) {} // version 2
};
现在作为A
,
{
return()? new A : new A(3) : new A(some_local_variable);
}
意志a
的内容保持相同通过了所有3new
LY分配A
的续航时间?
一般来说,寿命不够长。从12.2/5开始:“在函数调用(5.2.2)中临时绑定到引用参数,直到完成包含调用的完整表达式。”有关完整的详细信息,请参阅http://stackoverflow.com/questions/2604206/c-constant-reference-lifetime/2604269#2604269。 –
但是,我应该注意,将const引用绑定到文字“3”是没问题的,因为没有生成临时文件,并且文本的生命周期超过了'A'对象的生命周期。但是,如果转换是必要的,那么这不会成立。 –