Parole chiave di ereditarietà
Specifici di Microsoft
class [__single_inheritance] class-name;
class [__multiple_inheritance] class-name;
class [__virtual_inheritance] class-name;
Dove:
- nome della classe
Il nome della classe in cui è dichiarata.
C++ consente di dichiarare un puntatore A un membro di classe prima della definizione della classe.Di seguito è riportato un esempio:
class S;
int S::*p;
Nel codice riportato sopra, p viene dichiarato come un puntatore a membro Integer di classe S.tuttavia, class S non è stato ancora definito in questo codice, è stato dichiarato solo.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 metodi per specificare un modello di ereditarietà al compilatore:
Nell'IDE rappresentazione del Puntatore a membro
Alla riga di comando utilizzando l'. /vmg opzione
Utilizzo di pointers_to_members pragma
Utilizzando le parole chiave di ereditarietà __single_inheritance, __multiple_inheritancee __virtual_inheritance.Questa tecnica controlla il modello di ereditarietà per le per-classe.
[!NOTA]
Se si dichiarano sempre un puntatore A un membro di una classe dopo la definizione della classe, non è necessario utilizzare queste opzioni.
La dichiarazione di puntatore A un membro di una classe prima della definizione della classe riguarda la dimensione e la velocità del file eseguibile risultante.Più complessa l'ereditarietà utilizzata da una classe, dal maggior numero di byte necessari rappresentare un puntatore a un membro della classe e di grandezza il codice necessario per interpretare il puntatore.L'ereditarietà singola è il meno complesse e l'ereditarietà virtuale è più complessa.
Se nell'esempio viene modificato:
class __single_inheritance S;
int S::*p;
indipendentemente dalle opzioni della riga di comando o dai pragma, puntatori ai membri di class S verrà utilizzata la più piccola rappresentazione possibile.
[!NOTA]
La stessa dichiarazione con prototipo della rappresentazione del puntatore a membro di classe deve verificarsi in ogni unità di conversione che dichiara i puntatori ai membri della classe e la dichiarazione deve verificarsi prima che i puntatori ai membri vengano dichiarati.
Microsoft FINALE specifico