Rozšíření komponent pro platformy běhového prostředí
Jazyk Visual C++ poskytuje rozšíření jazyka pro programování vůči platformám modulu runtime.Použitím rozšíření komponent v jazyce Visual C++ (C++/CX) lze programovat aplikace Windows Store a komponenty, které kompilují nativní kód.Třebaže lze vytvářet aplikace Windows Store programováním přímo vůči rozhraním prostředí Windows Runtime modulu COM, je také možné použitím C++/CX pracovat s konstruktory, rozšířeními a ostatními moderními specifikacemi programování v jazyce C++.Pro povolení programování v jazyce C++ v rámci řízeného prostředí platformy .NET lze použít C++/CLI.
Dva moduly runtime, jedna sada rozšíření
C++/CX je podmnožinou C++/CLI.Pro běžná rozšíření C++/CX a C++/CLI závisí sémantika na tom, zda se zaměřuje na modul CLR (Common Language Runtime) nebo na prostředí Windows Runtime.Pro zkompilování aplikace na prostředí Windows Runtime je třeba použít možnost kompilátoru /ZW.Pro zkompilování pro CLR je třeba použít nastavení kompilátoru /clr.Tyto přepínače jsou automaticky nastaveny při vytvoření nového projektu v rámci aplikace Visual Studio.
Další informace o vytváření Windows Store aplikací v jazyce C++ naleznete v tématu Roadmap for Windows Store apps using C++.
C++/CLI rozšiřuje standard ISO/ANSI jazyka C++ a je definováno v rámci standardu Ecma C++/CLI.Další informace naleznete v tématu .NET – programování v jazyce Visual C++.
Klíčová slova datových typů
Rozšíření jazyka zahrnují klíčová slova agregace, což jsou klíčová slova, která se skládají z tokenů oddělených mezerou.Tokeny mohou nabývat při samostatném užití jiného významu než při společném použití.Například slovo "ref" je běžný identifikátor a slovo "class" je klíčové slovo které deklaruje nativní třídu.Pokud jsou ale tato slova zkombinována pro vytvoření ref class, bude příslušné souhrnné slovo deklarovat entitu, která je známá jako Třída modulu runtime.
Rozšíření také zahrnují klíčová slova závislá na obsahu.Klíčové slovo je bráno jako závislé na obsahu v závislosti jaký příkaz jej obsahuje a zároveň také na jeho umístění v rámci toho příkazu.Například, token "vlastnost" může být identifikátor nebo může deklarovat speciální typ člena veřejné třídy.
Následující tabulka zobrazuje seznam klíčových slov v rámci rozšíření jazyka C++.
Klíčové slovo |
Závislé na obsahu |
Účel |
Odkaz |
---|---|---|---|
ref class ref struct |
Ne |
Deklaruje třídu. |
|
value class value struct |
Ne |
Deklaruje hodnotovou třídu. |
|
interface class interface struct |
Ne |
Deklaruje rozhraní. |
|
enum class enum struct |
Ne |
Deklaruje výčet. |
|
property |
Ano |
Deklaruje vlastnost. |
|
delegate |
Ano |
Deklaruje delegáta. |
|
event |
Ano |
Deklaruje událost. |
Přepisování specifikátorů
Pro odvození lze určit chování přepisování pomocí následujících klíčových slov.Třebaže není klíčové slovo new rozšířením jazyka C++, je zde i přesto uvedeno, protože může být použito v rámci dodatečného kontextu.Pro nativní programování jsou platné také některé specifikátory.Další informace naleznete v tématu Jak: deklarovat specifikátory přepsat v nativní kompilace.
Klíčové slovo |
Závislé na obsahu |
Účel |
Odkaz |
---|---|---|---|
abstract |
Ano |
Označuje, že funkce nebo třídy jsou abstraktní. |
|
new |
Ne |
Označuje, že funkce nevznikla přepsáním verze základní třídy. |
|
override |
Ano |
Označuje, že funkce musí vzniknout přepsáním verze základní třídy. |
|
sealed |
Ano |
Zabraňuje použít třídy, jako základní třídy. |
Klíčová slova pro obecné typy
Pro podporu obecných typů byla přidána následující klíčová slova.Další informace naleznete v tématu Obecné typy (rozšíření komponent C++).
Klíčové slovo |
Závislé na obsahu |
Účel |
---|---|---|
generic |
Ne |
Deklaruje obecný typ. |
where |
Ano |
Určuje závislosti použité na parametru obecného typu. |
Ostatní klíčová slova
Pro rozšíření jazyka C++ byla přidána následující klíčová slova.
Klíčové slovo |
Závislé na obsahu |
Účel |
Odkaz |
---|---|---|---|
finally |
Ano |
Označuje výchozí chování zpracování výjimky. |
|
for each, in |
Ne |
Provede výčet prvků v kolekci. |
|
gcnew |
Ne |
Alokuje typy na haldě uvolnění paměti.Použijte místo new a delete. |
|
ref new |
Ano |
Alokuje typ prostředí Windows Runtime.Použijte místo new a delete. |
|
initonly |
Ano |
Označuje, že člen může být inicializován pouze v rámci deklarativního nebo statického konstruktoru. |
|
literal |
Ano |
Vytvoří proměnnou typu literál. |
|
nullptr |
Ne |
Označuje, že popisovač nebo ukazatel neukazují na objekt. |
Konstrukce šablony
Následující konstrukce jazyka jsou místo klíčových slov implementovány jako šablony.Zadáním nastavení kompilátoru /ZW jsou definovány v rámci oboru názvů lang.Zadáním nastavení kompilátoru /clr jsou definovány oborem názvů cli.
Klíčové slovo |
Účel |
Odkaz |
---|---|---|
array |
Deklaruje pole |
|
interior_ptr |
Ukazuje na data v odkazu (pouze CLR). |
|
pin_ptr |
Ukazuje na typy odkazu CLR pro dočasné potlačení systému pro uvolnění paměti (pouze CLR). |
|
safe_cast |
Rozhoduje a spouští volitelnou metodu přetypování pro typ modulu runtime. |
|
typeid |
Vrací objekt Type, který popisuje zadaný typ nebo objekt (pouze CLR). |
Deklarátory
Deklarace následujícího typu dávají pokyn modulu runtime pro automatickou správu doby života a pro odstranění alokovaných objektů.
Operátor |
Účel |
Odkaz |
---|---|---|
^ |
Deklaruje popisovač objektu, což je ukazatel na objekt CLR prostředí Windows Runtime, který je automaticky odstraněn, pokud již není nadále použitelný. |
|
% |
Deklaruje referenci sledování, což je odkaz na objekt CLR prostředí Windows Runtime, který je automaticky odstraněn, pokud již není nadále použitelný. |
Další konstrukce a příbuzná témata
Tato sekce popisuje další programovací konstrukce a témata týkající se CLR.
Téma |
Description |
---|---|
Povolí použití klíčových slov a identifikátorů (prostředí Windows Runtime a CLR). |
|
Povolí funkci přebrat proměnný počet argumentů (prostředí Windows Runtime a CLR). |
|
Zobrazí typy CLR použité místo integrálních typů jazyka C++. |
|
Modifikátor appdomain__declspec |
Modifikátor __declspec, který rozhoduje o existenci statické a globální proměnné pro každou doménu aplikace. |
Popisuje interpretaci přetypování stylů jazyka C. |
|
Konvence volání __clrcall |
Zobrazuje konvenci volání odpovídající CLR. |
__cplusplus_cli |
|
Popisuje vytvoření vlastních atributů CLR. |
|
Poskytuje přehled zpracování výjimek. |
|
Ukazuje, jak mohou číselné funkce přepisovat libovolné členy. |
|
Rozebírá jakým způsobem může sestavení přistupovat ke všem typům v rámci komponenty sestavení. |
|
Představuje podmínky, v jakých typech hodnot jsou zabaleny. |
|
Podpora kompilátoru pro typové vlastnosti (C++ Component Extensions) |
Rozebírá detekci charakteristik typů v době kompilace. |
Direktivy managed, unmanaged |
Představuje, jakým způsobem mohou v rámci stejného modulu existovat nespravované funkce. |
Modifikátor process__declspec |
Modifikátor __declspec, který rozhoduje o existenci statické a globální proměnné pro každý proces. |
Představuje verzi CLR informace typu modulu runtime. |
|
Rozebírá konverzi řetězcových literálů na String v rámci kompilátoru. |
|
Povoluje pohyb typu v rámci přesouvání sestavení do jiného sestavení tak, aby nemusel být klientský kód znovu kompilován. |
|
Představuje uživatelsky definované atributy. |
|
Importuje externí sestavení. |
|
Vysvětluje dokumentaci na základě kódu jazyka XML pomocí /doc (zpracování dokumentačních komentářů) (C/C++) |