[英]C++ function return scope and reference
最近我正在學習C ++,對以下案例有一些疑問。
void function_a(const int &i){
//using i to do something
}
int function_b(){
return 1;
}
好的,如果我要打電話......
function_a(function_b());
function_a有沒有機會從它的參數中讀取臟引用?
謝謝你的時間。
不,這不會失敗。 function_b
返回所創建的臨時function_b
保證至少在語句結束之前保持不變。
在這種情況下,編譯器將生成一個未命名的臨時值,其引用將傳遞給function_a
。 您的代碼大致相當於:
int temporary = function_b();
function_a(temporary);
temporary
范圍持續到調用function_a()
的語句結束(這對於整數來說是無關緊要的,但可以確定何時為更復雜的對象調用析構函數)。
你需要寫如下。
'i'無法綁定到'function_b'返回的臨時值。 這里沒有關於臟引用的問題,因為這里涉及“臨時”而不是對本地函數的引用(一旦'function_b'返回就超出范圍)
void function_a(int const &i){
//using i to do something
}
int function_b(){
return 1;
}
int main(){
function_a(function_b());
}
這個問題沒有實際意義。 那種操作不會編譯。
錯誤C2664:'function_a':無法將參數1從'int'轉換為'int&'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.