可能な二重にコピーコンストラクタについて困惑している:次のコードで
Why copy constructor is not called in this case?私はC++
、私は三つの変数、A1、A2およびA3を構築しました。 C++プライマーp.476の例があります
は:
string empty_copy = string();//copy-initialization
誰も私が説明するのに役立つことができますあります
1)なぜA1とA2は、コピーコンストラクタによって構築されていないと
2 )私のコードの初期化a2と本のempty_copyの違いは何ですか?
ありがとうございます!
#include<iostream>
using namespace std;
class A{
public:
A(){}
A(int v){}
A(const A&x){
cout<<"copy constructor"<<endl;
}
};
A generateA(){
return A(0);
}
int main(){
cout<<"First:"<<endl;
A a1=generateA();
cout<<"Second:"<<endl;
A a2=A(0);
cout<<"Third:"<<endl;
A a3=a1;
return 0;
}
アウトプットは(win7の2010年のVisual Studioの下でUbuntu10.10でのG ++)である:
First:
Second:
Third:
copy constructor
また、*一時的な初期化による* elionコピー。したがって、両方の種類の溶出が使用される。 –
ありがとう!ところで、最適化を無効にする方法はありますか? –
@ user1265982:はい。詳細については、更新された回答をご確認ください。 –