Я наткнулся на вопрос, о котором никогда раньше не думал.
Вот:
каждый объект (указанный в списке инициализации) " constructor " будет запущен.
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 .
Почему не конструктор, а конструктор копирования?