Sdílet prostřednictvím


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.

Třídy a struktury (rozšíření komponent C++)

value class

value struct

Ne

Deklaruje hodnotovou třídu.

Třídy a struktury (rozšíření komponent C++)

interface class

interface struct

Ne

Deklaruje rozhraní.

interface class (rozšíření komponent C++)

enum class

enum struct

Ne

Deklaruje výčet.

enum class (rozšíření komponent C++)

property

Ano

Deklaruje vlastnost.

property (rozšíření komponent C++)

delegate

Ano

Deklaruje delegáta.

delegate (rozšíření komponent C++)

event

Ano

Deklaruje událost.

event (rozšíření komponent C++)

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í.

abstract (rozšíření komponent C++)

new

Ne

Označuje, že funkce nevznikla přepsáním verze základní třídy.

new (nový slot v tabulce vtable) (rozšíření komponent C++)

override

Ano

Označuje, že funkce musí vzniknout přepsáním verze základní třídy.

override (rozšíření komponent C++)

sealed

Ano

Zabraňuje použít třídy, jako základní třídy.

sealed (rozšíření komponent C++)

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.

Zpracování výjimek (rozšíření komponent C++)

for each, in

Ne

Provede výčet prvků v kolekci.

pro každý v

gcnew

Ne

Alokuje typy na haldě uvolnění paměti.Použijte místo new a delete.

ref new, gcnew (rozšíření komponent C++)

ref new

Ano

Alokuje typ prostředí Windows Runtime.Použijte místo new a delete.

ref new, gcnew (rozšíření komponent C++)

initonly

Ano

Označuje, že člen může být inicializován pouze v rámci deklarativního nebo statického konstruktoru.

InitOnly

literal

Ano

Vytvoří proměnnou typu literál.

literal (rozšíření komponent C++)

nullptr

Ne

Označuje, že popisovač nebo ukazatel neukazují na objekt.

nullptr (rozšíření komponent C++)

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

Pole (rozšíření komponent C++)

interior_ptr

Ukazuje na data v odkazu (pouze CLR).

interior_ptr (C++/CLI)

pin_ptr

Ukazuje na typy odkazu CLR pro dočasné potlačení systému pro uvolnění paměti (pouze CLR).

pin_ptr (C++/CLI)

safe_cast

Rozhoduje a spouští volitelnou metodu přetypování pro typ modulu runtime.

safe_cast (rozšíření komponent C++)

typeid

Vrací objekt Type, který popisuje zadaný typ nebo objekt (pouze CLR).

typeid (rozšíření komponent C++)

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ý.

Operátor popisovače objektu (^) (rozšíření komponent C++)

%

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ý.

Operátor sledovacího odkazu (rozšíření komponent C++)

Další konstrukce a příbuzná témata

Tato sekce popisuje další programovací konstrukce a témata týkající se CLR.

Téma

Description

__identifier (C++/CLI)

Povolí použití klíčových slov a identifikátorů (prostředí Windows Runtime a CLR).

Seznamy argumentů s proměnnou délkou (...) (C++/CLI)

Povolí funkci přebrat proměnný počet argumentů (prostředí Windows Runtime a CLR).

.NET Framework – Ekvivalenty k nativním typům C++ (C++/CLI)

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.

Přetypování ve stylu jazyka pomocí možnosti /clr (C++/CLI)

Popisuje interpretaci přetypování stylů jazyka C.

Konvence volání __clrcall

Zobrazuje konvenci volání odpovídající CLR.

__cplusplus_cli

Předdefinovaná makra

Vlastní atributy (C++)

Popisuje vytvoření vlastních atributů CLR.

Zpracování výjimek (rozšíření komponent C++)

Poskytuje přehled zpracování výjimek.

Explicitní přepsání (rozšíření komponent C++)

Ukazuje, jak mohou číselné funkce přepisovat libovolné členy.

Sestavení přítele (C++)

Rozebírá jakým způsobem může sestavení přistupovat ke všem typům v rámci komponenty sestavení.

Zabalení (rozšíření komponent C++)

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.

Reflexe (C++/CLI)

Představuje verzi CLR informace typu modulu runtime.

String (rozšíření komponent C++)

Rozebírá konverzi řetězcových literálů na String v rámci kompilátoru.

Předávání typů (C++/CLI)

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.

Uživatelsky definované atributy (rozšíření komponent C++)

Představuje uživatelsky definované atributy.

#using – direktiva (C++)

Importuje externí sestavení.

XML dokumentace (Visual C++)

Vysvětluje dokumentaci na základě kódu jazyka XML pomocí /doc (zpracování dokumentačních komentářů) (C/C++)

Viz také

Další zdroje

.NET – programování v jazyce Visual C++

Nativní funkce a vzájemná funkční spolupráce rozhraní .NET