2017-03-17 54 views
0

在C++中,因爲右值被立即銷燬,你不能從一個右值初始化一個參考。 const引用如何從rvalues初始化?爲什麼你可以初始化一個const引用,而不是來自右值的非const引用?

例如:

int f() { 
    return 3; 
} 

int main() { 
    const int& x = f(); // ok 
    int& y = f();  // error: invalid initialization of non-const reference of 
         // type ‘int&’ from an rvalue of type ‘int’ 
} 
+0

你說的初始化與右值引用是什麼意思?你能詳細說明嗎? –

+0

這裏:http://lpaste.net/353657 – jcarpenter2

+0

這篇文章解釋了一切與右值引用:http://thbecker.net/articles/rvalue_references/section_01.html編輯:嗯,我掛本文不涉及'const' r-值引用。我的錯。 – Dai

回答

-2

如果我正確理解你的問題,我想你想知道如何代碼 「const int的& X = F();」因爲f()的返回值會被銷燬並且對該對象的引用無效。但需要注意的是,任何函數的返回值是由編譯器創建一個臨時變量多數民衆贊成在堆棧上,所以它留到調用函數返回及其堆棧被銷燬。

相關問題