C++では、コンポジションを使用するクラスのコピーコンストラクタを作成するために、すべてのメンバオブジェクトのコピーコンストラクタを再帰的に呼び出します。私は以下のコードで同じことを試してみました:メンバーオブジェクトのコンストラクタ呼び出しのコピー
class A
{
public:
A(){cout<<"A constructor called"<<endl;}
A(const A&){cout<<"A copy constructor called"<<endl;}
};
class B
{
public:
B(){cout<<"B constructor called"<<endl;}
B(const B&){cout<<"B copy constructor called"<<endl;}
};
class C
{
A a;
B b;
public:
C(){cout<<"C constructor called"<<endl;}
C(const C&){cout<<"C copy constructor called"<<endl;}// If you comment this line, you will get output: Case 1 (see below) and if you don't comment, you will get o/p: case 2(see below)
};
void main()
{
C c;
cout<<endl;
C c2 = c;
}`
ケース1:
と呼ばコピーコンストラクタ
呼ば
Cコンストラクタと呼ばれる
Bのコンストラクタと呼ばれるコンストラクタ
と呼ばBのCONST呼ばコンストラクタ
呼ば
Cコンストラクタと呼ば
Bコンストラクタと呼ばれるコンストラクタ:ケース2
BコピーコンストラクタA、B、C、コンストラクタと呼ばれ、その後.. A、B、Cのコピーコンストラクタが呼び出さ:ructorマイ疑いがケース2 O/Pがなければならないということである
Cコピーコンストラクタ
が呼び出さ。しかし、それは起こっていません。助けてください。
RVOについても読んでください。 – Nawaz
@ serge:私はgetingしています、呼ばれたコンストラクタ、Bコンストラクタと呼ばれる、Cコピーコンストラクタが呼び出されました。 – Jatin