class Base
{
public:
int i;
Base()
{
cout<<"Base Constructor"<<endl;
}
Base (Base& b)
{
cout<<"Base Copy Constructor"<<endl;
i = b.i;
}
~Base()
{
cout<<"Base Destructor"<<endl;
}
void val()
{
cout<<"i: "<< i<<endl;
}
};
class Derived: public Base
{
public:
int i;
Derived()
{
Base::i = 5;
cout<<"Derived Constructor"<<endl;
}
/*Derived (Derived& d)
{
cout<<"Derived copy Constructor"<<endl;
i = d.i;
}*/
~Derived()
{
cout<<"Derived Destructor"<<endl;
}
void val()
{
cout<<"i: "<< i<<endl;
Base::val();
}
};
Если я это сделаю
Производное d1;
Производная d2 = d1;
Вызывается конструктор копирования базы и вызывается конструктор копирования производных по умолчанию.
Но если я удаляю комментарии из конструктора копии производного, базовый конструктор копии не вызывается. Есть ли какая-то конкретная причина для этого?
Заранее спасибо.