Regeln für den Aufruf des Basisklassenkonstruktors in C++
Hallo zusammen! Ich habe gerade angefangen, C++ zu lernen, und komme mit den Regeln für den Aufruf des Basisklassenkonstruktors bei der Vererbung nicht klar. Angenommen, ich habe eine einfache Klasse `Animal` und eine Klasse `Dog`, die davon erbt:
```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"; }
};
```
Wenn ich ein `Dog`-Objekt ohne Parameter erstelle, wird der Standardkonstruktor `Animal()` aufgerufen, und das ist logisch. Aber wenn ich `Dog d("Buddy")` schreibe, wird zuerst `Animal()` aufgerufen und dann erst mein Konstruktor `Dog(string name)`. Dadurch bleibt das Feld `name_` in `Animal` leer, obwohl ich den Namen übergebe! Wie kann ich erreichen, dass der Name an die Basisklasse übergeben wird? Und generell, welche Regeln gibt es für den Aufruf des Basisklassenkonstruktors?