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();
}
};
Si oui Dérivé d1; Dérivé d2 = d1; Le constructeur de copie de base est appelé et le constructeur de copie par défaut de derived est appelé. Mais si je supprime les commentaires du constructeur de copie de dérivées, le constructeur de copie de base n'est pas appelé. Y a-t-il une raison spécifique à cela? Merci d'avance.Constructeur de copie de base non appelé
IMVHO http://www.parashift.com/c++-faq-lite/ctors.html est une ressource géniale pour comprendre les constructeurs C++. (Et en fait, la FAQ C++ Lite en général est une source incroyable d'informations pour le débutant avancé.) – notJim
Je pense que le destructeur de base devrait être virtuel. –