Avatar ·

Règles d'appel du constructeur de la classe de base en C++

Bonjour à tous ! Je viens de commencer à apprendre le C++ et je n'arrive pas à comprendre les règles d'appel du constructeur de la classe de base lors de l'héritage. Supposons que j'ai une classe simple `Animal` et une classe `Dog` qui en hérite : ```cpp class Animal { public: Animal() { cout << "Animal created\n"; } Animal(string name) : name_(name) { cout << "Animal " << name << " created\n"; } private: string name_; }; class Dog : public Animal { public: Dog() { cout << "Dog created\n"; } Dog(string name) { cout << "Dog " << name << " created\n"; } }; ``` Quand je crée un objet `Dog` sans paramètres, le constructeur par défaut `Animal()` est appelé, ce qui est logique. Mais quand j'écris `Dog d("Buddy")`, d'abord `Animal()` est appelé, puis mon constructeur `Dog(string name)`. De ce fait, le champ `name_` dans `Animal` reste vide, même si je passe un nom ! Comment faire pour que le nom soit transmis à la classe de base ? Et en général, quelles sont les règles pour appeler le constructeur de la classe de base ?