今まで考えたこともなかった質問に出くわしました。ここにあります:各オブジェクト(初期化リストにリストされている)の「コンストラクター」がトリガーされます。
class B
{
public:
B() { cout<<"B Con\n";}
B(const B &b) { cout<<"B Copy Con\n";}
};
class A
{
public:
A(B &b):_m(b) { cout<<"A Con\n";}
A(const A &a):_m(a._m) { cout<<"A Copy Con\n";}
private:
B _m;
}
main()
{
B b;
A a(b);
}
次に、次のような出力を得ました。
B Con
B Copy Con
A Con
出力によると、「A a(b)」が B のコピー コンストラクターをトリガーしたと思います。私が正しければ、それは 'A(B &b):_m(b)' が B のコピー コンストラクターをトリガーすることを意味します。なぜコンストラクタではなくコピーコンストラクタなのですか?