Vererbungsschlüsselwörter
Microsoft-spezifisch
class
class-name
class __single_inheritance
class-name
class __multiple_inheritance
class-name
class __virtual_inheritance
class-name
Dabei gilt Folgendes:
class-name
Der Name der zu deklarierenden Klasse.
Mit C++ können Sie einen Zeiger vor der Definition der Klasse auf ein Klassenelement deklarieren. Beispiel:
class S;
int S::*p;
Im obigen p
Code wird als Zeiger auf ein ganzzahliges Element der Klasse S deklariert. class S
In diesem Code wurde jedoch noch nicht definiert. Es wurde nur deklariert. Wenn der Compiler einen solchen Zeiger erkennt, muss er eine allgemeine Darstellung des Zeigers erzeugen. Die Größe der Darstellung ist vom angegebenen Vererbungsmodell abhängig. Es gibt drei Möglichkeiten, ein Vererbungsmodell für den Compiler anzugeben:
Über den
/vmg
Schalter an der BefehlszeileVerwenden des
pointers_to_members
PragmasVerwenden der Vererbung Schlüsselwort (keyword)s
__single_inheritance
,__multiple_inheritance
und__virtual_inheritance
. Dieses Verfahren steuert das Vererbungsmodell auf Basis einer einzelnen Klasse.Hinweis
Wenn Sie stets einen Zeiger auf einen Member einer Klasse deklarieren, nachdem Sie die Klasse definiert haben, ist es nicht erforderlich, eine dieser Optionen zu verwenden.
Wenn Sie einen Zeiger auf ein Klassenelement deklarieren, bevor die Klasse definiert wird, kann sie sich negativ auf die Größe und Geschwindigkeit der resultierenden ausführbaren Datei auswirken. Je komplexer die von einer Klasse verwendete Vererbung ist, desto größer ist die Anzahl der Bytes, die erforderlich sind, um einen Zeiger auf ein Element der Klasse darzustellen. Je größer der Code ist, der zum Interpretieren des Zeigers erforderlich ist. Die einzelne (oder keine) Vererbung ist am wenigsten komplex, und die virtuelle Vererbung ist am komplexesten. Zeiger auf Elemente, die Sie deklarieren, bevor die Klasse definiert wird, verwenden immer die größte, komplexeste Darstellung.
Wenn das obige Beispiel so geändert wird:
class __single_inheritance S;
int S::*p;
Dann verwenden Zeiger unabhängig class S
von den von Ihnen angegebenen Befehlszeilenoptionen oder Pragmen die kleinste mögliche Darstellung.
Hinweis
Dieselbe Vorwärtsdeklaration einer pointer-to-member-Klassendarstellung sollte in jeder Übersetzungseinheit auftreten, die Zeiger auf Member dieser Klasse deklariert. Die Deklaration sollte vor der pointer-to-member-Deklaration erfolgen.
Aus Kompatibilität mit früheren Versionen, , und _virtual_inheritance
sind Synonyme für __single_inheritance
, __multiple_inheritance
und __virtual_inheritance
es sei denn, Compileroption/Za
(Spracherweiterungen deaktivieren) wird _multiple_inheritance
angegeben. _single_inheritance
Ende Microsoft-spezifisch
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für