ref, klasa i struktura ref (C++/CLI i C++/CX)

Rozszerzenia klasy ref lub struktury ref deklarują klasę lub strukturę, której okres istnienia obiektu jest administrowany automatycznie. Gdy obiekt nie jest już dostępny lub wykracza poza zakres, pamięć zostanie zwolniona.

Wszystkie środowiska wykonawcze

Składnia

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 {};

Parametry

class_access
(Opcjonalnie) Dostępność klasy lub struktury poza zestawem. Możliwe wartości to public i private (private jest wartością domyślną). Zagnieżdżone klasy lub struktury nie mogą mieć specyfikatora class_access .

name
Nazwa klasy lub struktury.

Modyfikator
(Opcjonalnie) modyfikatory abstrakcyjne i zapieczętowane są prawidłowymi modyfikatorami.

inherit_access
(Opcjonalnie) Dostępność base_type. Jedynym dozwolonym dostępem jest public (public jest wartość domyślna).

base_type
(Opcjonalnie) Typ podstawowy. Jednak typ wartości nie może działać jako typ podstawowy.

Aby uzyskać więcej informacji, zobacz opisy specyficzne dla języka tego parametru w sekcjach środowisko wykonawcze systemu Windows i Środowiska uruchomieniowego języka wspólnego.

Uwagi

Domyślna dostępność składowa obiektu zadeklarowanego za pomocą klasy ref lub klasy wartości to private. A domyślna dostępność składowa obiektu zadeklarowanego za pomocą struktury ref lub struktury wartości to public.

Gdy typ odwołania dziedziczy z innego typu odwołania, funkcje wirtualne w klasie bazowej muszą zostać jawnie zastąpione (z przesłonięciem) lub ukryte (z nowym miejscem w tabeli wirtualnej)). Funkcje klasy pochodnej muszą być również jawnie oznaczone jako virtual.

Aby wykryć w czasie kompilacji, czy typ jest klasą ref lub strukturą ref, albo klasą wartości lub strukturą wartości, użyj , __is_ref_class (type)__is_value_class (type)lub .__is_simple_value_class (type) Aby uzyskać więcej informacji, zobacz Obsługa kompilatora dla cech typów.

Aby uzyskać więcej informacji na temat klas i struktur, zobacz

Środowisko wykonawcze systemu Windows

Uwagi

Zobacz Klasy ref i struktury oraz klasy i struktury Value.

Parametry

base_type
(Opcjonalnie) Typ podstawowy. Klasa ref lub struktura ref może dziedziczyć z zera lub więcej interfejsów i zero lub jeden typ ref. Klasa lub struktura wartości może dziedziczyć tylko z zera lub większej liczby interfejsów.

W przypadku deklarowania obiektu przy użyciu słów kluczowych klasy ref lub struktury ref obiekt jest uzyskiwany przez uchwyt do obiektu, czyli wskaźnik licznika odwołania do obiektu. Gdy zadeklarowana zmienna wykracza poza zakres, kompilator automatycznie usuwa obiekt źródłowy. Gdy obiekt jest używany jako parametr w wywołaniu lub jest przechowywany w zmiennej, uchwyt do obiektu jest rzeczywiście przekazywany lub przechowywany.

W przypadku deklarowania obiektu przy użyciu słów kluczowych klasy wartości lub struktury wartości okres istnienia obiektu zadeklarowanego nie jest nadzorowany. Obiekt jest jak każda inna standardowa klasa lub struktura języka C++.

Wymagania

Opcja kompilatora: /ZW

środowiska uruchomieniowe w trakcie wykonania

Uwagi

W poniższej tabeli wymieniono różnice w składni przedstawionej w sekcji Wszystkie środowiska uruchomieniowe specyficzne dla języka C++/CLI.

Parametry

base_type
(Opcjonalnie) Typ podstawowy. Klasa ref lub struktura ref może dziedziczyć z zera lub więcej zarządzanych interfejsów i zero lub jeden typ ref. Klasa lub struktura wartości może dziedziczyć tylko z zera lub większej liczby zarządzanych interfejsów.

Słowa kluczowe klasy ref i struktury ref informują kompilator, że klasę lub strukturę należy przydzielić na stercie. Gdy obiekt jest używany jako parametr w wywołaniu lub jest przechowywany w zmiennej, odwołanie do obiektu jest rzeczywiście przekazywane lub przechowywane.

Słowa kluczowe klasy wartości i struktury wartości informują kompilator, że wartość przydzielonej klasy lub struktury jest przekazywana do funkcji lub przechowywanych w elementach członkowskich.

Wymagania

Opcja kompilatora: /clr

Zobacz też

Rozszerzenia składników dla platformy .NET i platformy uniwersalnej systemu Windows