Avatar ·

Regras de chamada do construtor da classe base em C++

Olá a todos! Comecei a estudar C++ e não consigo entender as regras de chamada do construtor da classe base na herança. Suponha que eu tenha uma classe simples `Animal` e uma classe `Dog`, que herda dela:\n\n```cpp\nclass Animal {\npublic:\n Animal() { cout << "Animal created"; }\n Animal(string name) : name_(name) { cout << "Animal " << name << " created"; }\nprivate:\n string name_;\n};\n\nclass Dog : public Animal {\npublic:\n Dog() { cout << "Dog created"; }\n Dog(string name) { cout << "Dog " << name << " created"; }\n};\n```\n\nQuando crio um objeto `Dog` sem parâmetros, o construtor padrão `Animal()` é chamado, e isso é lógico. Mas quando escrevo `Dog d("Buddy")`, primeiro é chamado `Animal()`, e depois meu construtor `Dog(string