2017-08-26 147 views
-4
const int& foo(int i) 
{ 
    return i; 
} 

作爲一名計算機科學專業的學生,​​我很想知道這個函數是如何工作的。在函數聲明中,返回類型是對int的const引用,但函數內部我們傳遞的只是一個int,我讀過的大部分介紹書都說返回類型應該與我們返回的匹配,任何人都可以幫助我理解實際發生了什麼?C++函數的返回類型

+0

我可以假設有什麼像const int&temp = I;而從這個函數返回的東西是temp? –

+0

沒有任何優化,是的。通過優化,.things可以不同。 – iBug

+0

你能給我看一個優化的例子嗎?謝謝。 –

回答

1

在函數聲明的返回類型是const引用到INT,但我們傳遞的函數裏面只是一個在

C++有隱式轉換,例如:

double function(int n) { 
    return n; 
} 

有一個從int到double的隱式轉換。

就你而言,你有一個從int到引用的轉換。這是正確的,並編譯,但在這種情況下,你的變量將被「刪除」在函數結束。這可能是一個問題,如果你以後使用它,這被認爲是undefined behaviour