一般來說,這是討論最多隻能局部功能變量:什麼是常數引用右值的類數據成員的生命週期?
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'對象的生命週期。但是,如果轉換是必要的,那麼這不會成立。 –