Klassen und Strukturen (Komponentenerweiterungen für C++)

Deklariert eine Klasse oder Struktur, deren Objektlebensdauer automatisch verwaltet wird.Wenn das Objekt nicht mehr zugänglich ist oder außerhalb des gültigen Bereichs liegt, verwirft Visual C++ automatisch den Arbeitsspeicher, der dem Objekt zugeordnet ist.

Alle Laufzeiten

Syntax

class_access ref class    name modifier :  inherit_access base_type {};
class_access ref struct   name modifier :  inherit_access base_type {};
class_access value class  name modifier :  inherit_access base_type {};
class_access value struct name modifier :  inherit_access base_type {};

Parameter

  • class_access (optional)
    Der Zugriff auf die Klasse oder Struktur außerhalb der Assembly.Mögliche Werte sind public und private (private ist der Standardwert).Geschachtelte Klassen oder Strukturen können keinen class_access Bezeichner aufweisen.

  • Name
    Der Name der zugeordneten Klasse oder Struktur.

  • Modifizierer (optional)
    abstract und sealed sind gültige Modifizierer.

  • inherit_access (optional)
    Der Zugriff von base_type.Der einzige zulässige Zugriff lautet public (public ist die Standardeinstellung).

  • base_type (optional)
    Ein Basistyp.Allerdings kann ein Werttyp nicht als ein Basistyp auftreten.

    Weitere Informationen finden Sie in den sprachspezifischen Beschreibungen dieses Parameters in den Abschnitten Windows-Runtime und Common Language Runtime.

Hinweise

Der Zugriff für einen Standardmember eines Objekts, das mit ref class oder value class deklariert wird, ist private.Der Zugriff für einen Standardmember eines Objekts, das mit ref struct oder value struct deklariert wird, ist public.

Wenn ein Referenztyp von einem anderen Referenztyp erbt, müssen virtuelle Funktionen in der Basisklasse explizit überschrieben (mit override (Komponentenerweiterungen für C++)) oder ausgeblendet werden (mit new (neuer Slot in vtable) (Komponentenerweiterungen für C++)).Die Funktionen der abgeleiteten Klasse müssen auch explizit als virtual gekennzeichnet werden.

Um bei der Kompilierung festzustellen, ob ein Typ ref class oder ref struct oder value class oder value struct ist, verwenden Sie __is_ref_class (type), __is_value_class (type), oder __is_simple_value_class (type).Weitere Informationen finden Sie unter Compilerunterstützung für Typmerkmale (Komponentenerweiterungen für C++).

Weitere Informationen zu Klassen und Strukturen finden Sie unter

Windows-Runtime

Hinweise

Siehe Verweisklassen und Strukturen und Wertklassen und Strukturen.

Parameter

  • base_type (optional)
    Ein Basistyp.ref class oder ref struct kann von null oder mehreren Schnittstellen sowie von null oder einem ref-Typen erben.value class oder value struct kann nur von null oder mehreren Schnittstellen erben.

    Wenn Sie ein Objekt deklarieren, indem Sie die Schlüsselwörter ref class oder ref struct verwenden, wird auf das Objekt durch ein Handle für ein Objekt, d. h. ein Reference-Counting Pointer auf das Objekt, zugegriffen.Wenn die deklarierte Variable ungültig wird, löscht der Compiler automatisch das zugrunde liegende Objekt.Wenn das Objekt als Parameter in einem Aufruf verwendet wird oder in einer Variablen gespeichert ist, wird ein Handle für das Objekt übergeben oder gespeichert.

    Wenn Sie ein Objekt deklarieren, indem Sie die Schlüsselwörter value class oder value struct verwenden, wird die Objektlebensdauer des deklarierten Objekts nicht überwacht.Das Objekt verhält sich wie jede andere Standard-C++-Klasse oder -Struktur.

6w96b5h7.collapse_all(de-de,VS.110).gifAnforderungen

Compileroption: /ZW

Common Language Runtime

Hinweise

In der folgenden Tabelle werden die für C++/CLI spezifischen Unterschiede der Syntax aufgeführt, die im Bereich Alle Laufzeiten gezeigt werden.

Parameter

  • base_type (optional)
    Ein Basistyp.ref class oder ref struct kann von null oder mehreren verwalteten Schnittstellen und von null oder einem Referenztypen erben.value class oder value struct kann nur von null oder mehren verwalteten Schnittstellen erben.

    Die Schlüsselwörter ref class und ref struct teilen dem Compiler mit, dass die Klasse oder die Struktur dem Heap zugeordnet werden soll.Wenn das Objekt als Parameter in einem Aufruf verwendet wird oder in einer Variablen gespeichert ist, wird eine Referenz für das Objekt übergeben oder gespeichert.

    Die Schlüsselwörter value class und value struct teilen dem Compiler mit, dass der Wert der zugeordneten Klasse oder Struktur an Funktionen übergeben oder in Membern gespeichert wird.

6w96b5h7.collapse_all(de-de,VS.110).gifAnforderungen

Compileroption: /clr

Siehe auch

Konzepte

Komponentenerweiterungen für Laufzeitplattformen