Přípony komponent pro .NET a UPW

Standard jazyka C++ umožňuje dodavatelům kompilátoru poskytovat nestandardní rozšíření jazyka. Společnost Microsoft poskytuje rozšíření, která vám pomůžou připojit nativní kód C++ ke kódu, který běží na .NET Framework nebo univerzální platformě Windows Platform (UPW). Rozšíření .NET se nazývají C++/CLI a vytvářejí kód, který se spouští v prostředí spravovaném spouštění rozhraní .NET, které se nazývá Common Language Runtime (CLR). Rozšíření UPW se nazývají C++/CX a vytvářejí nativní strojový kód.

Poznámka

Pro nové aplikace doporučujeme místo C++/CX použít C++/WinRT. C++/WinRT je nová standardní projekce jazyka C++17 pro rozhraní API Windows Runtime. Budeme dál podporovat C++/CX a WRL, ale důrazně doporučujeme, aby nové aplikace používají C++/WinRT. Další informace najdete v tématu C++/WinRT.

Dva moduly runtime, jedna sada rozšíření

C++/CLI rozšiřuje standard ISO/ANSI C++ a je definován ve standardu Ecma C++/CLI. Další informace najdete v tématu Programování v .NET pomocí C++/CLI (Visual C++).

Rozšíření C++/CX jsou podmnožinou C++/CLI. I když je syntaxe rozšíření ve většině případů stejná, generovaný kód závisí na tom, jestli zadáte možnost kompilátoru pro cílení na UPW, nebo na možnosti /ZW/clr cílení na .NET. Tyto přepínače se nastaví automaticky, když Visual Studio k vytvoření projektu.

Klíčová slova datového typu

Jazyková rozšíření obsahují agregovaná klíčová slova, která se skládají ze dvou tokenů oddělených mezerami. Tokeny můžou mít jeden význam, pokud se používají samostatně, a jiný význam, když se používají společně. Například slovo "ref" je běžný identifikátor a slovo "třída" je klíčové slovo, které deklaruje nativní třídu. Když se ale tato slova zkombinují do třídy ref,výsledné agregační klíčové slovo deklaruje entitu, která se označuje jako třída modulu runtime.

Rozšíření obsahují také kontextová klíčová slova. Klíčové slovo je považováno za kontextové v závislosti na druhu příkazu, který ho obsahuje, a jeho umístění v tomto příkazu. Například "vlastnost" tokenu může být identifikátor nebo může deklarovat speciální druh člena veřejné třídy.

Následující tabulka uvádí klíčová slova v rozšíření jazyka C++.

Klíčové slovo Kontextově Účel Reference
ref – třída

ref – struktura
No Deklaruje třídu. Třídy a struktury
value – třída

value – struktura
No Deklaruje třídu hodnot. Třídy a struktury
interface class

interface – struktura
No Deklaruje rozhraní. interface class
enum class

enum – struktura
No Deklaruje výčet. enum class
property Yes Deklaruje vlastnost. Vlastnost
Delegát Yes Deklaruje delegáta. delegate (C++/CLI a C++/CX)
Událost Yes Deklaruje událost. Událost

override – specifikátory

Následující klíčová slova můžete použít k kvalifikaci chování přepsání pro odvození. I když new klíčové slovo není rozšířením jazyka C++, je zde uvedeno, protože jej lze použít v dalším kontextu. Některé specifikátory jsou také platné pro nativní programování. Další informace najdete v tématu Postupy: Deklarace specifikátoru přepsání v nativních kompilacích (C++/CLI).

Klíčové slovo Kontextově Účel Reference
Abstraktní Yes Označuje, že funkce nebo třídy jsou abstraktní. Abstraktní
new No Označuje, že funkce není přepsáním verze základní třídy. new (nový slot v tabulce vtable)
override Yes Označuje, že metoda musí být přepsáním verze základní třídy. override
sealed Yes Zabraňuje použití tříd jako základních tříd. sealed

Klíčová slova pro obecné typy

Pro podporu obecných typů byla přidána následující klíčová slova. Další informace najdete v tématu Obecné typy.

Klíčové slovo Kontextově Účel
Obecné No Deklaruje obecný typ.
Kde Yes Určuje omezení, která se použijí na parametr obecného typu.

Různá klíčová slova

Do rozšíření jazyka C++ byla přidána následující klíčová slova.

Klíčové slovo Závislé na kontextu Účel Reference
finally Yes Označuje chování výchozí zpracování výjimek. Zpracování výjimek
for each, in No Vytvoří výčet prvků kolekce. for each, in
gcnew No Přiděluje typy pro haldu uvolňování paměti. Použijte místo new a delete . ref new, gcnew
ref new Yes přidělí prostředí Windows Runtime typ. Použijte místo new a delete . ref new, gcnew
initonly Yes Označuje, že člen může být inicializován pouze v deklaraci nebo ve statickém konstruktoru. initonly (C++/CLI)
doslovný Yes Vytvoří proměnnou literálu. doslovný
nullptr No Označuje, že popisovač nebo ukazatel neukazuje na objekt. nullptr

Konstrukce šablon

Následující jazykové konstrukce jsou implementovány jako šablony namísto klíčová slova. Zadáte-li /ZW možnost kompilátoru, jsou definovány v lang oboru názvů. Zadáte-li /clr možnost kompilátoru, jsou definovány v cli oboru názvů.

Klíčové slovo Účel Reference
array Deklaruje pole. Pole
interior_ptr (Jenom CLR) Odkazuje na data v typu odkazu. interior_ptr (C++/CLI)
pin_ptr (Jenom CLR) Odkazuje na referenční typy CLR pro dočasné potlačení systému uvolňování paměti. pin_ptr (C++/CLI)
safe_cast Určuje a spustí optimální metodu přetypování pro typ modulu runtime. safe_cast
typeid (Jenom CLR) Načte objekt System. Type , který popisuje daný typ nebo objekt. typeid

Deklarátory

Následující typ deklarátory instruuje modul runtime, aby automaticky spravoval dobu života a odstraňování přidělených objektů.

Operátor Účel Reference
^ Deklaruje popisovač objektu; to znamená, že ukazatel na objekt prostředí Windows Runtime nebo CLR, který je automaticky odstraněn, když již není použitelný. Popisovač objektu – operátor (^)
% Deklaruje sledovací odkaz; to znamená odkaz na objekt prostředí Windows Runtime nebo CLR, který je automaticky odstraněn, když již není použitelný. Operátor sledovacího odkazu

Tato část obsahuje seznam dalších programovacích konstrukcí a témata, která se týkají CLR.

Téma Description
__identifier (C++/CLI) (prostředí Windows Runtime a CLR) povolují použití klíčových slov jako identifikátorů.
Seznamy argumentů s proměnnou délkou (...) (C++/CLI) (prostředí Windows Runtime a CLR) umožňují, aby funkce převzala proměnlivý počet argumentů.
.NET Framework – ekvivalenty nativních typů C++ (C++/CLI) Obsahuje seznam typů CLR, které se používají místo celočíselných typů jazyka C++.
doména AppDomain upravující __declspec modifikátor, který stanoví, že pro každou doménu AppDomain existují statické a globální proměnné.
Přetypování ve stylu jazyka pomocí možnosti /clr (C++/CLI) Popisuje způsob interpretace přetypování ve stylu jazyka C.
__clrcall konvence volání Označuje konvenci volání vyhovující modulu CLR.
__cplusplus_cli Předdefinovaná makra
Vlastní atributy Popisuje, jak definovat vlastní atributy CLR.
Zpracování výjimek Poskytuje přehled o zpracování výjimek.
Explicitní přepsání Ukazuje, jak členské funkce mohou přepsat libovolné členy.
Friend sestavení (C++) Popisuje, jak může klientské sestavení přistupovat ke všem typům v součásti sestavení.
Zabalení Ukazuje podmínky, které jsou typy hodnot v krabici.
Podpora kompilátoru pro typové vlastnosti Popisuje, jak detekovat charakteristiky typů v době kompilace.
spravované, nespravované direktivy pragma Ukazuje, jak mohou spravované a nespravované funkce existovat společně ve stejném modulu.
zpracování upravující __declspec modifikátor, který stanoví, že statické a globální proměnné existují pro proces.
Reflexe (C++/CLI) Ukazuje verzi CLR informací o typu modulu runtime.
Řetězec Popisuje převod kompilátoru řetězcových literálů na řetězec.
Předávání typů (C++/CLI) Povoluje přesun typu v lodním sestavení do jiného sestavení tak, aby kód klienta nebylo nutné znovu kompilovat.
Uživatelsky definované atributy Ukazuje uživatelsky definované atributy.
#using direktiva Importuje externí sestavení.
dokumentace XML Vysvětluje dokumentaci kódu založenou na jazyce XML pomocí /doc (zpracování dokumentačních komentářů) (C/C++)

Viz také

Programování pro .NET v jazyce C++/CLI (Visual C++)
Nativní a interoperabilita .NET