ref – třída a ref – struktura (C++/CLI a C++/CX)

Rozšíření ref třídy nebo ref struktury deklarují třídu nebo strukturu, jejíž životnost objektu je spravována automaticky. Pokud objekt už není přístupný nebo přestane být obor, uvolní se paměť.

Všechny moduly runtime

Syntaxe

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
(Volitelné) Přístupnost třídy nebo struktury mimo sestavení. Možné hodnoty jsou public a private (private je výchozí). Vnořené třídy nebo struktury nemohou mít specifikátor class_access .

Jméno
Název třídy nebo struktury.

Modifikátor
(Volitelné) abstraktní a zapečetěné jsou platné modifikátory.

inherit_access
(Volitelné) Přístupnost base_type. Jediná povolená přístupnost je public (public výchozí).

base_type
(Volitelné) Základní typ. Typ hodnoty však nemůže fungovat jako základní typ.

Další informace najdete v popisu tohoto parametru pro konkrétní jazyk v částech prostředí Windows Runtime a Common Language Runtime.

Poznámky

Výchozí člen přístupnosti objektu deklarovaného s ref třídy nebo value třídy je private. A výchozí člen přístupnosti objektu deklarovaného pomocí ref struktury nebo struktury hodnoty je public.

Pokud typ odkazu dědí z jiného typu odkazu, virtuální funkce v základní třídě musí být explicitně přepsány (s přepsání) nebo skryté (s novým slotem vtable)). Odvozené funkce třídy musí být také explicitně označeny jako virtual.

Chcete-li zjistit v době kompilace, zda je typ ref třída nebo ref struktury, nebo hodnota třídy nebo hodnoty struktury, použijte __is_ref_class (type), __is_value_class (type)nebo __is_simple_value_class (type). Další informace naleznete v tématu Podpora kompilátoru pro vlastnosti typu.

Další informace o třídách a strukturách najdete v tématu

prostředí Windows Runtime

Poznámky

Viz Ref třídy a struktury a hodnoty třídy a struktury.

Parametry

base_type
(Volitelné) Základní typ. Referenční třída nebo struktura odkazu může dědit z nuly nebo více rozhraní a nulových nebo jednoho typu ref. Struktura hodnot nebo třídy hodnot může dědit pouze z nuly nebo více rozhraní.

Když deklarujete objekt pomocí klíčových slov ref třídy ref nebo ref struktury, je k objektu přistupovat popisovačem objektu, tj. ukazatelem referenčního čítače na objekt. Když deklarovaná proměnná zmizí z rozsahu, kompilátor automaticky odstraní základní objekt. Pokud je objekt použit jako parametr ve volání nebo je uložen v proměnné, popisovač objektu je skutečně předán nebo uložen.

Když deklarujete objekt pomocí klíčového slova třídy hodnot nebo struktury hodnot , životnost objektu deklarovaného objektu není pod dohledem. Objekt je podobný jakékoli jiné standardní třídě nebo struktuře jazyka C++.

Požadavky

Možnost kompilátoru: /ZW

CLR (Common Language Runtime)

Poznámky

Následující tabulka uvádí rozdíly od syntaxe uvedené v části Všechny moduly runtime, které jsou specifické pro C++/CLI.

Parametry

base_type
(Volitelné) Základní typ. Třída odkazu nebo struktura odkazu může dědit z nuly nebo více spravovaných rozhraní a nulových nebo jednoho typu ref. Struktura hodnot nebo třídy hodnot může dědit pouze z nuly nebo více spravovaných rozhraní.

Klíčová slova ref třídy a ref struktury říkají kompilátoru, že třída nebo struktura mají být přiděleny haldě. Pokud je objekt použit jako parametr ve volání nebo je uložen v proměnné, odkaz na objekt je skutečně předán nebo uložen.

Klíčová slova třídy hodnot a struktury hodnot říká kompilátoru, že hodnota přidělené třídy nebo struktury je předána funkcím nebo uloženým ve členech.

Požadavky

Možnost kompilátoru: /clr

Viz také

Přípony komponent pro .NET a UPW