此輸出F~
,但我期待~F
不是最重要的常量..但這是什麼?
#include <iostream>
struct Foo {
int _x;
operator const int &() const {return _x;}
~ Foo() {std :: cout << "~";}
};
void foo (const int &)
{
std :: cout << "F";
}
int main()
{
foo (Foo());
}
我寫這個作爲一個反例表明,最重要的const的是一個例外,而不是規則。它通常寫爲
當const引用結合該臨時的一個臨時的,那麼壽命延伸到參考
我試圖說明的壽命,雖然Foo()
是暫時的,轉換運算符返回的_x
的引用不是,並且上面的代碼是不安全的。
但是輸出似乎證明的例子是安全,臨時Foo()
的生命週期通過對其成員之一的const引用的存在而擴展。
這是正確的?這在標準中是在哪裏指定的?
返回引用是往往比一個好一個壞主意。這是一個很好的例子。 –
@ R.MartinhoFernandes所以你聲明'operator []'爲...? – curiousguy