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 ?
No answers yet.
Connectez-vous pour laisser une réponse