19 189
edições
[edição não verificada] | [edição não verificada] |
Temos uma série de classes que mantém relações de parentesco conforme mostramos nas seções anteriores. Em termos genéricos, classes que herdam características de uma base precisam de regras claras quando forem criadas e destruídas. Precisamos definir a sequência em que os construtores e destrutores serão chamados, uma vez que cada classe tem pelo menos um construtor e um destrutor.
Agora temos a questão: Quando é que os
* Quando um objeto da classe derivada é instanciado, o construtor da classe base é chamado primeiro seguido do construtor das classes derivadas, em sequência da base até a última classe derivada.
* Quando o objeto da classe derivada é destruído, o seu destrutor é chamado primeiro seguido dos destrutores das outras classes derivadas logo abaixo, em sequência até a base.
<source lang="cpp">
#include <iostream>
using namespace std;
class base
{
public:
base() { cout << "
~base() { cout << "
};
class
{
public:
~
};
class
{
public:
derived2() { cout << "
~derived2() { cout << "
};
int main()
{
#ifdef WIN32
system ("pause");
#endif
return 0;
}
|