Nwlapcug.com


Che cosa è un distruttore virtuale in C?

Poiché C++ utilizza una programmazione object-oriented, o modello OOP, come parte del suo design, i programmatori devono acquisire familiari con alcuni concetti OOP quali classi e oggetti. Quando un programmatore desidera sviluppare un oggetto da utilizzare nel codice, lei deve progettare 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 utilizzo richiede che un programmatore di comprendere il ruolo dei distruttori in classi, il concetto di ereditarietà delle classi e l'utilizzo di funzioni virtuali in programmazione in C++.

Ereditarietà

Una forza di OOP è il concetto di ereditarietà. Quando un programmatore vuole estendere il funzionalmente di un oggetto, o se un oggetto condivide gran parte del livello funzionale di un altro oggetto con solo lievi differenze, il programmatore può derivare una classe da un altro. Quando una classe deriva da un'altra classe (la classe "base"), dispone dell'accesso per le variabili e le funzioni definite nella prima classe. In questo esempio, classe "palla" deriva dalla classe "sfera" ed estende la sua funzionalità.

classe Sphere {

pubblico:

int getRadius() () {

ritorno r;

}

int r;

}

Sfera di classe: public Sphere {

pubblico:

colore di stringa;

}

Funzioni virtuali

Poiché una classe derivata ha accesso a tutte le funzioni della classe base, è possibile utilizzarli come qualsiasi momento come se agisse come classe base. Tuttavia, la classe derivata potrebbe invece modificare una funzione nella classe di base per soddisfare le sue esigenze. Inoltre, una classe di base potrebbe servire come modello per la classe derivata. In questo caso, la classe base sarà il nome funzioni senza definire che cosa fanno, lasciando invece che per le classi derivate. Una funzione in una classe base che non fa nulla, lasciando invece una classe derivata per implementare, viene chiamata una funzione "virtuale".

Distruttori

Integrale a oggetto di design è l'implementazione di funzioni di "costruttore" e "distruttore". Una funzione costruttore per una classe definisce come un oggetto creato dalla classe prima inizializzerà stesso (quali valori di dati predefinito conterrà, ad esempio). Il distruttore, al contrario, determina ciò che accade quando un oggetto viene eliminato dalla memoria (come le informazioni in esso viene eliminate, ad esempio). Questo esempio di codice viene illustrato come una classe prima definisce funzioni costruttore e distruttore.

classe Sphere {

Sphere(); Costruttore

~ Sphere(); distruttore

}

Distruttori virtuali

A causa di come funzionano le classi e i distruttori, quando una classe derivata viene eliminata dalla memoria, sia il distruttore della classe derivata e il distruttore della classe base deve essere chiamata. A tale scopo, i programmatori creano i distruttori virtuali nelle classi di base, che possono definire classi derivate. Questo esempio mostra una classe base con un distruttore virtuale e una classe derivata con relativo distruttore.

classe Sphere {

Sphere();

Virtual ~ {} Sphere(); la parola chiave "virtual" denota una classe virtuale

}

Sfera di classe: public Sphere {

Ball();

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