2017-02-25 24 views
1

比方說,我有以下功能:當我返回傳遞給函數的引用參數時,內部發生了什麼?

int f(int& x) 
{ 
    x++; 
    return x; 
} 

第一個問題,請問return語句複製X,因爲函數沒有返回一個int &的參考價值。

第二個問題,爲什麼我不能用函數調用函數?如果我確實想要通過有時帶有值的文字來調用函數呢?我試圖超載與

int f(int x) 
{ 
    x++; 
    return x; 
} 

它編譯如果我與文字調用。但是當我傳遞一個變量時,我得到了模糊的調用錯誤。有沒有辦法做到這一點?

+0

曖昧 - >刪除第一個功能。但是,你想要你的函數做什麼? –

+0

關於第一個問題,你可以舉一個函數f的例子嗎? –

+0

看看這個鏈接http://courses.washington.edu/css342/zander/css332/passby.html我認爲這是你想要的 –

回答

3

也許這是你想要什麼:

int F(const int& x) { return x + 1; } 
int F(int& x) { x++; return x; } 
+0

這個編譯和工作時傳遞一個文字值。但我不明白爲什麼?當第一個函數需要一個常量引用時,它怎樣才能使用文字? – bkarj

+0

@bkarj:由於引用是const,因此可以傳遞值而不是變量。 –

+0

謝謝,有道理 – bkarj

相關問題