[英]C++ Return Value Optimization
我是C ++的新手,我在Wiki和該網站上閱讀了一些關於收益優化的文章,但是我仍然很好奇以下行為是如何發生的:
using namespace std;
class A
{
public:
A() {cout << "A Ctor" << endl;}
A(const A &a) {cout << "A copy Ctor" << endl;}
};
A Foo()
{
A a;
return a;
}
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Foo()" << endl;
Foo();
cout << "Foo() and new object" << endl;
A b(Foo());
return 0;
}
輸出為:
Foo()
A Ctor
A copy Ctor
Foo() and new object
A Ctor
A copy Ctor
我的問題是,為什么Foo();
和A b(Foo());
都只觸發一個副本構造函數調用? 這是否意味着從Foo()
返回的復制值可用於在該位置構造對象b
,從而無需再次調用b的構造函數? 這基於Visual Studio 2010。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.