Che cosa è una classe virtuale?

Una classe virtuale è una classe che viene assegnato solo una volta nella memoria, in modo che i bambini di questa classe di utilizzo solo una copia di quella classe genitore che ha sede in memoria. Una classe è un gruppo di oggetti che condividono tratti o attributi comuni. Fare una classe virtuale dà linguaggi di programmazione orientati agli oggetti la capacità di usare l'ereditarietà multipla, quando secondo o più classi genitore generazione sono derivati ​​da classi comuni di base ancestrali. A seconda del linguaggio di programmazione di riferimento, la parola "virtuale", simile parola o la sintassi e la semantica di una classe sono usati per indicare che una classe particolare è da considerarsi virtuale.

Non tutti i linguaggi di programmazione orientata agli oggetti consentono ereditarietà multipla, che è quando una classe figlia può essere derivata da più classi madri allo stesso tempo. In un linguaggio di programmazione come C ++, una classe può ereditare tutti i dati utente e le funzioni membro di entrambe le classi genitore in una volta e avere accesso a entrambi i set di dati madri e funzioni. Altre lingue che supportano l'ereditarietà multipla comprendono Perl, Python, Tcl, e Eiffel.

Un problema si verifica in più gerarchie di ereditarietà quando due o più classi di genitori utilizzati per creare una classe figlia sono originariamente derivati ​​da sola o la stessa classe nonno. Questo è chiamato il problema di diamante, il nome derivante da come gerarchia apparirebbe in questa situazione. Quando un programma compilatore tenta di istanziare una classe, ad esempio una classe nipotino fatto da due classi principali con un nonno comune due copie del nonno sono realizzati in memoria, una per ciascun genitore.

A causa l'ambiguità causata da più copie dello stesso nonno in memoria, il compilatore non è in grado di accertare che la copia del nonno della nipote deve utilizzare per accedere ai dati nonni o funzioni. Per porre rimedio a questa situazione, in C ++ il nonno è fatto in una classe virtuale quando dichiara i genitori. Questo fa sì che il compilatore di fare una sola copia del nonno in memoria che entrambi i genitori condividono. Una volta che il nonno è diventato una classe virtuale, il compilatore non ha alcun problema di decidere come il nipote dovrebbe accedere al nonno perché c'è solo una copia del nonno.

Grande cura dovrebbe essere presa quando strutturazione gerarchie di classi, soprattutto quando saranno inclusi o diventano la base per le gerarchie molto più grandi in futuro. Il corretto utilizzo di una classe virtuale dà gerarchie di classi maggiore latitudine in sviluppo; tuttavia, hanno il potenziale di causare errori difficili da individuare. Lo studio dei principi di ingegneria di programmazione informatica solidi contribuirà a garantire che gli effetti collaterali imprevisti di organizzazione programma improprio non si verificano.

  • Fare una classe virtuale dà linguaggi di programmazione orientati agli oggetti la capacità di usare l'ereditarietà multipla, quando secondo o più classi genitore generazione provengono da classi comuni di base ancestrali.