Condividi tramite


Parole chiave di ereditarietà

Sezione specifica Microsoft

class [__single_inheritance] class-name; 
class [__multiple_inheritance] class-name; 
class [__virtual_inheritance] class-name;

dove:

  • class-name
    Il nome della classe che si sta dichiarando.

Il linguaggio C++ consente di dichiarare un puntatore a un membro della classe prima della definizione della classe. Ad esempio:

class S;
int S::*p;

Nel codice riportato in precedenza, p è dichiarato come un puntatore al membro Integer di classe S. Tuttavia, class S non è ancora stato definito in questo codice; è stato solo dichiarato. Quando il compilatore rileva tale puntatore, deve effettuare una rappresentazione generalizzata del puntatore. La dimensione della rappresentazione dipende dal modello di ereditarietà specificato. Sono disponibili quattro modi per specificare un modello di ereditarietà al compilatore:

  • Nell'IDE in Rappresentazione di puntatore a membro

  • Nella riga di comando mediante l'opzione /vmg

  • Utilizzando il pragma pointers_to_members

  • Utilizzando le parole chiave di ereditarietà __single_inheritance, __multiple_inheritance e __virtual_inheritance. Con questa tecnica viene controllato il modello di ereditarietà in base alle classi.

    Nota

    Se si dichiara sempre un puntatore a un membro di una classe dopo la definizione della classe, non è necessario utilizzare nessuna di queste opzioni.

La dichiarazione di un puntatore a un membro di una classe prima della definizione della classe influisce sulla dimensione e sulla velocità del file eseguibile risultante. Più è complessa l'ereditarietà utilizzata da una classe, maggiore è il numero di byte necessari per rappresentare un puntatore a un membro della classe e maggiori sono le dimensioni del codice necessario per interpretare il puntatore. L'ereditarietà singola è meno complessa e l'ereditarietà virtuale è più complessa.

Se l'esempio precedente viene modificato in:

class __single_inheritance S;
int S::*p;

indipendentemente dalle opzioni della riga di comando o dai pragma, i puntatori ai membri di class S utilizzeranno la più piccola rappresentazione possibile.

Nota

La stessa dichiarazione con prototipo della rappresentazione della classe puntatore a membro deve verificarsi in ogni unità di conversione che dichiara i puntatori ai membri di quella classe e la dichiarazione deve verificarsi prima che vengano dichiarati i puntatori ai membri.

Fine sezione specifica Microsoft

Vedere anche

Riferimenti

Parole chiave C++