Come utilizzare C ++ distruttori virtuali

January 12

Procedimento virtuale ha alcuna implementazione diretta e il suo comportamento è determinato dal metodo con la stessa firma che è al livello più basso ereditarietà dell'oggetto istanziato. Un distruttore viene chiamato automaticamente quando l'oggetto viene distrutto. Un distruttore virtuale in C ++ viene utilizzato principalmente per prevenire perdite di risorse eseguendo un clean-up dell'oggetto. Di seguito viene spiegato come utilizzare distruttori virtuali in C ++.

istruzione

1 Determinare quando utilizzare un distruttore virtuale. Un distruttore per una classe dovrebbe essere virtuale quando un oggetto di una classe derivata verrà distrutto invocando il distruttore della classe base. Il distruttore deve essere virtuale quando si elimina un puntatore ad un oggetto ed è possibile che punti ad una classe derivata.

2 Imparare una differenza importante tra un distruttore e altri metodi membri. In entrambi i casi, il metodo della classe derivata viene richiamato se è applicata. Tuttavia, il distruttore della classe base viene successivamente chiamato, mentre questo non accade con altri metodi.

3 Si consideri il seguente esempio di un distruttore virtuale:

includere

classe BASE_CLASS
{

public:
Base_class(){ cout<<"Constructor: Base_class"<<endl;}
// virtual keyword is needed here
virtual ~ Base_class(){ cout<<"Destructor : Base_class"<<endl;}

};
Classe Derived_Class: BASE_CLASS pubblico
{Public:

Derived_class(){ cout<<"Constructor: Derived_class"<<endl;}
~ Derived_class(){ cout<<"Destructor : Derived_class"<<endl;}

};
void main ()
{

Base_class *p = new Derived_class();
delete p;

}

4 Osservare l'uso della parola chiave virtuale, nell'esempio al punto 3. Se il distruttore della classe base non sono stati dichiarati come virtuale, il distruttore della classe derivata non si sarebbe chiamato.

5 Implementare almeno un corpo vuoto per un distruttore virtuale da una funzione virtuale pura non può essere dichiarato.