Cos'è una classe virtuale?

Una classe virtuale è una classe che viene assegnata una sola volta in memoria, in modo tale che i bambini di quella classe utilizzino solo la copia di quella classe genitore che viene stabilita in memoria. Una classe è un gruppo di oggetti che condividono tratti o attributi comuni. Fare una classe virtuale fornisce linguaggi di programmazione orientati agli oggetti la capacità di utilizzare l'eredità multipla quando le classi genitori di seconda o più generazione sono derivate da classi di base ancestrale comuni. A seconda del linguaggio di programmazione del computer a cui si fa riferimento, la parola chiave "virtuale", la parola chiave simile o la sintassi e la semantica di una classe sono usate per implicare che una determinata classe deve essere considerata virtuale.

Non tutte i linguaggi di programmazione orientati agli oggetti consentono l'ereditarietà multipla, che è quando una classe infantile può essere derivata da più classi genitore al momento. In un linguaggio di programmazione come C ++, una classe può ereditare tutti i dati dei membri e le funzioni dei membri da entrambe le classi genitori e avere accesso ad entrambi i set di PARDati e funzioni ENT. Altre lingue che supportano l'eredità multipla includono Perl, Python, TCL ed Eiffel.

Un problema si verifica in più gerarchie di eredità quando due o più classi di genitori utilizzate per creare una classe per bambini sono originariamente derivate dalla sola o dalla stessa classe nonna. Questo si chiama Diamond Problem, il nome derivante da come sarebbe la gerarchia in questa situazione. Quando un programma di compilatore cerca di istanziare una classe, come una lezione di nipote realizzata in due classi genitori con un nonno comune, due copie del nonno vengono realizzate in memoria, una per ogni genitore.

A causa dell'ambiguità causata da più copie dello stesso nonno in memoria, il compilatore non è in grado di accertare quale copia del nonno dovrebbe utilizzare il nipote per accedere ai dati o alle funzioni del nonno. Per porre rimedio a questa situazione, in C ++ il nonno viene trasformato in una virtclasse ual quando si dichiara i genitori. Ciò fa sì che il compilatore faccia solo una copia del nonno in memoria che entrambi i genitori condividono. Una volta che il nonno è diventato una classe virtuale, il compilatore non ha problemi a decidere come il nipote dovrebbe accedere al nonno perché esiste solo una copia del nonno.

Dovrebbe essere prestata grande cura quando si strutturano gerarchie di classe, specialmente quando saranno incluse o diventeranno la base per gerarchie molto più grandi in futuro. L'utilizzo adeguato di una classe virtuale fornisce gerarchie di classe maggiore latitudine nello sviluppo; Tuttavia, hanno il potenziale per causare errori difficili da individuare. Lo studio dei principi di ingegneria della programmazione di computer solidi contribuirà a garantire che non si verifichino effetti collaterali inaspettati dell'organizzazione del programma improprio.

ALTRE LINGUE

Questo articolo è stato utile? Grazie per il feedback Grazie per il feedback

Come possiamo aiutare? Come possiamo aiutare?