[英]Return an anonymous instance/value in functions in C++
我對C ++中函數的返回類型有疑問。
為什么return pair<int, int>(1, 1);
並return vector<int>(3, 3);
工作? 我不應該事先創建一個本地實例var並將其作為返回值,就像return a一樣,因為return int 1;
不起作用。
// ...
int fun1() {
// return int 1;
int a = 1;
return a;
}
pair<int, int> fun2() {
return pair<int, int>(1, 1);
}
vector<int> fun3() {
return vector<int>(3, 3);
}
int main(){
cout << fun1() << endl;
cout << fun2().first << endl;
cout << fun3()[1] << endl;
return 0;
}
這樣的返回樣式只能應用於具有特定構造函數的類實例嗎? 下面的示例可以工作。 我在尋找確認書或參考資料。
class A {
public:
int a;
A(int a_) : a(a_) {};
};
A fun4() {
return A(1);
}
在以下位置測試了代碼示例:
Apple LLVM版本6.0(clang-600.0.56)(基於LLVM 3.5svn)目標:x86_64-apple-darwin14.0.0線程模型:posix
因為
return int 1
不起作用。
但是return int(1);
是否...或return 3 - 2;
對於這個問題。 創建臨時文件或使用文字沒有問題-如有必要,可以使用類復制或移動構造函數在調用者的上下文中設置變量,或者有時會返回Return Value Optimization(RVO),被調用函數將能夠直接在調用者的堆棧中創建返回值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.