next up previous contents
Next: Polimorfismo Up: Herança Previous: Herança múltipla   Sumário

Herança de construtores e destrutores

É possível que classes base e derivada tenham construtores e destrutores associados. Uma questão que pode surgir é, durante a construção de um objeto derivado, qual a ordem de chamada dos construtores? Similarmente, qual a ordem de chamada de destrutores quando o objeto é removido?

Quando um objeto de uma classe base é criado, primeiro o construtor da classe base (se existe um construtor) é invocado, e depois o construtor da classe derivada é executado. Por outro lado, quando um objeto é removido, a ordem inversa é obedecida: primeiro o destrutor da classe derivada é executado, e apenas então o destrutor da classe base é invocado.

Este procedimento é o mesmo qualquer que seja o nível de derivação: na construção, de base para derivada, e na destruição, de derivada para base. O mesmo é válido mesmo no caso de herança múltipla.

Observe que não é preciso explicitar a chamada ao destrutor da classe base -- a invocação da função é automática, sendo uma consequência da ligação entre as classes.

Quando o construtor da classe base requer argumentos, é preciso adotar a forma estendida de declaração de construtores. Esta forma pode ser representada como


construtor-derivado (lista-arg) : 				 base1(lista-arg),  

base2 (lista-arg),
...,
baseN (lista-arg)
{
// codigo do construtor derivado
}
onde base1 ,..., baseN são os nomes das classes bases que são herdadas pela classe derivada.


next up previous contents
Next: Polimorfismo Up: Herança Previous: Herança múltipla   Sumário
Ivan Luiz Marques Ricarte 2001-06-01