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 Befehlszeile

  • Verwenden des pointers_to_members Pragmas

  • Verwenden der Vererbung Schlüsselwort (keyword)s __single_inheritance, __multiple_inheritanceund __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_inheritanceund __virtual_inheritance es sei denn, Compileroption/Za(Spracherweiterungen deaktivieren) wird _multiple_inheritanceangegeben. _single_inheritance

Ende Microsoft-spezifisch

Siehe auch

Schlüsselwörter