Che cosa è un distruttore virtuale in C?

November 12

Perché C ++ utilizza una programmazione orientata agli oggetti, o il modello OOP, come parte del suo design, i programmatori devono acquisire familiarità con alcuni concetti OOP quali classi e oggetti. Quando un programmatore desidera sviluppare un oggetto per l'uso in codice, deve progettare la funzionalità dell'oggetto in una "classe". Una classe definisce i dati e le funzioni che un oggetto può utilizzare. Un tipo specifico di oggetto funzione, il distruttore virtuale, per il suo uso richiede che un programmatore comprendere il ruolo di distruttori nelle classi, il concetto di ereditarietà di classe, e l'utilizzo di funzioni virtuali in C ++ programmazione.

Eredità

Un punto di forza di programmazione orientata agli oggetti risiede nel concetto di eredità. Quando un programmatore intende estendere la funzionalmente di un oggetto, o se uno azioni oggetto gran parte della funzionalmente di un altro oggetto con solo piccole differenze, il programmatore può derivare una classe dall'altra. Quando una classe deriva da un'altra classe (la classe "base"), ha accesso alle variabili e le funzioni definite nella prima classe. In questo esempio, la classe "ball" deriva dalla classe "sfera" ed estende la sua funzionalità.

class Sphere {

pubblico:

int getRadius () {

tornare R;

}

INT R;

}

Classe palla: sfera pubblica {

pubblico:

colore della stringa;

}

Funzioni virtuali

Poiché una classe derivata ha accesso a tutte le funzioni della classe base, allora si può usare come ogni volta come se agisse come classe base. Tuttavia, la classe derivata potrebbe invece modificare una funzione nella classe base per soddisfare le sue esigenze. Inoltre, una classe base può servire come modello per classe derivata. In questo caso, la classe di base chiamerà le funzioni senza definire ciò che fanno, lasciando invece che alle classi derivate. Una funzione in una classe base che non fa nulla, lasciando invece una classe derivata per la sua attuazione, si chiama una funzione di "virtuale".

distruttori

Parte integrante oggetto di design è l'implementazione di "costruttore" e funzioni "distruttore". Una funzione di costruzione per una classe definisce come un oggetto creato dalla classe in primo luogo l'inizializzazione (valori di dati quello di default conterrà, per esempio). Il distruttore, al contrario, determina cosa accade quando un oggetto viene eliminato dalla memoria (come l'informazione in esso viene eliminato, per esempio). Questo codice di esempio mostra come una classe definisce prima funzioni di costruzione e distruttore.

class Sphere {

Sfera(); //costruttore

~ Sfera (); //distruttore

}

distruttori virtuali

A causa di come le classi e distruttori lavoro, quando una classe derivata viene eliminato dalla memoria, sia il distruttore della classe derivata e il distruttore della classe base devono essere chiamati. Per fare questo, i programmatori creano distruttori virtuali in classi di base, che le classi derivate possono definire. Questo esempio mostra una classe base con un distruttore virtuale e una classe derivata con proprio distruttore.

class Sphere {

Sfera();

virtual ~ Sfera () {}; // La parola "virtuale" denota una classe virtuale

}

Classe palla: sfera pubblica {

Palla();

~ Ball (): // eliminazione di un oggetto "palla" chiamerà questo distruttore e il distruttore Sphere