Component Extensions dla platform środowiska uruchomieniowego

Visual C++ dostarcza rozszerzeń języka, aby pomóc w programowaniu na platformy środowiska uruchomieniowego.Za pomocą Rozszerzenia składników dla programu Visual C++ (C++/CX), można zaprogramować aplikacje Windows Store i składniki, które są kompilowane do kodu macierzystego.Można także tworzyć aplikacje Windows Store przez programowanie bezpośrednio w interfejsach COM Środowisko wykonawcze systemu Windows za pomocą C++/CX, można pracować z konstruktorami, wyjątkami i innymi nowoczesnymi idiomami programowania w języku C++.Aby włączyć programowanie C++ w zarządzanym środowisku wykonawczym na platformie .NET, można użyć C++/CLI.

Dwa środowiska uruchomieniowe, jeden zestaw rozszerzeń

C++/CX jest podzbiorem C++/CLI.Dla rozszerzeń, które są wspólne dla C++/CX i C++/CLI, semantyka zależy od tego, czy są one elementami docelowymi środowiska uruchomieniowego języka wspólnego (CLR) lub Środowisko wykonawcze systemu Windows.Aby skompilować aplikację do uruchamiania na Środowisko wykonawcze systemu Windows, należy określić opcję kompilatora /ZW.Aby skompilować to uruchamiania w CLR, należy określić opcję kompilatora /clr.Te przełączniki są ustawiane automatycznie, gdy do tworzenia projektu jest używany program Visual Studio.

Aby uzyskać więcej informacji dotyczących tworzenia aplikacji Windows Store w języku C++, zobacz Roadmap for Windows Store apps using C++.

C++/CLI rozszerza standard ISO/ANSI języka C++ i jest definiowana w standardzie Ecma C++/CLI.Aby uzyskać więcej informacji, zobacz Programowanie .NET w programie Visual C++.

Słowa kluczowe dla typów danych

Rozszerzenia języka obejmują zagregowane słowa kluczowe, które są słowami kluczowymi złożonymi z dwóch tokenów rozdzielonych białymi znakami.Tokeny mogą mieć jedno znaczenie, jeśli są używane oddzielnie i inne znaczenie, gdy są używane razem.Na przykład wyraz "ref" jest zwykłym identyfikatorem, a wyraz "class" jest słowem kluczowym, które deklaruje natywną klasę.Kiedy te słowa są połączone, formując ref class, wynikowe zagregowane słowo kluczowe deklaruje obiekt, który jest znany jako klasa środowiska uruchomieniowego.

Rozszerzenia zawierają również słowa kluczowe zależne od kontekstu.Słowo kluczowe jest traktowane jako zależne od kontekstu, w zależności od rodzaju instrukcji, która go zawiera oraz jego położenia w tej instrukcji.Na przykład token "property" może być identyfikatorem lub może deklarować specjalny rodzaj członka klasy publicznej.

Poniższa tabela zawiera listę słów kluczowych dla rozszerzenia języka C++.

Słowo kluczowe

Zależne od kontekstu

Cel

Odwołanie

ref class

ref struct

Nie

Deklaruje klasę.

Klasy i struktury (C++ Component Extensions)

value class

value struct

Nie

Deklaruje klasę wartości.

Klasy i struktury (C++ Component Extensions)

interface class

interface struct

Nie

Deklaruje interfejs.

interface class (C++ Component Extensions)

enum class

enum struct

Nie

Deklaruje wyliczenie.

enum class (C++ Component Extensions)

property

Tak

Deklaruje właściwość.

property (C++ Component Extensions)

delegate

Tak

Deklaruje delegata.

delegate (C++ Component Extensions)

event

Tak

Deklaruje zdarzenie.

event (C++ Component Extensions)

Specyfikatory zastąpienia

Można użyć następujących słów kluczowych do kwalifikowania zastąpienia zachowania dla dziedziczenia.Chociaż słowo kluczowe new nie jest rozszerzeniem języka C++, jest ono wyświetlane w tym miejscu, ponieważ może być użyte w dodatkowym kontekście.Niektóre specyfikatory są prawidłowe również w programowaniu natywnym.Aby uzyskać więcej informacji, zobacz Porady: deklarowanie specyfikatorów zastąpienia w kompilacjach macierzystych (C++/CLI).

Słowo kluczowe

Zależne od kontekstu

Cel

Odwołanie

abstract

Tak

Wskazuje, że funkcja lub klasa jest abstrakcyjna.

abstract (C++ Component Extensions)

new

Nie

Wskazuje, że funkcja nie jest zastąpieniem wersji klasy podstawowej.

new (nowe gniazdo w vtable) (C++ Component Extensions)

override

Tak

Wskazuje, że metoda musi być zstąpieniem wersji klasy bazowej.

override (C++ Component Extensions)

sealed

Tak

Zapobiega używaniu klasy jako klasy podstawowej.

sealed (rozszerzenia składnika C++)

Słowa kluczowe dla elementów typu genercznego.

Poniższe słowa kluczowe zostały dodane do obsługi typów generycznych.Aby uzyskać więcej informacji, zobacz Typy ogólne (C++ Component Extensions).

Słowo kluczowe

Zależne od kontekstu

Cel

generic

Nie

Deklaruje typ generyczny.

where

Tak

Określa ograniczenia, które są stosowane do parametru typu generycznego.

Różne słowa kluczowe

Poniższe słowa kluczowe zostały dodane do rozszerzeń języka C++.

Słowo kluczowe

Zależne od kontekstu

Cel

Odwołanie

finally

Tak

Pokazuje domyślne zachowanie przechwytywania wyjątków.

Obsługa wyjątków (C++ Component Extensions)

for each, in

Nie

Wylicza elementy w kolekcji.

for each, in

gcnew

Nie

Przydziela typy na stercie wyrzucania elementów bezużytecznych.Zamiast tego należy użyć new oraz delete.

ref new, gcnew (C++ Component Extensions)

ref new

Tak

Przydziela typ Środowisko wykonawcze systemu Windows.Zamiast tego należy użyć new oraz delete.

ref new, gcnew (C++ Component Extensions)

initonly

Tak

Wskazuje, że członek może być zainicjowany tylko w deklaracji lub konstruktorze statycznym.

initonly (C++/CLI)

literal

Tak

Tworzy zmienną literału.

literal (C++ Component Extensions)

nullptr

Nie

Wskazuje, że uchwyt lub wskaźnik nie wskazuje na obiekt.

nullptr (C++ Component Extensions)

Konstrukcje szablonów

Następujące konstrukcje języka są implementowane jako szablony, a nie jako słowa kluczowe.Jeśli opcja kompilatora /ZW zostanie określona, zostaną zdefiniowane w przestrzeni nazw lang.Jeśli opcja kompilatora /clr zostanie określona, zostaną zdefiniowane w przestrzeni nazw cli.

Słowo kluczowe

Cel

Odwołanie

array

Deklaruje tablicę.

Tablice (C++ Component Extensions)

interior_ptr

(Tylko CLR) Wskazuje na dane w typie referencyjnym.

interior_ptr (C++/CLI)

pin_ptr

(Tylko CLR) Wskazuje na typy referencyjne CLR, aby tymczasowo pominąć system wyrzucania elementów bezużytecznych.

pin_ptr (C++/CLI)

safe_cast

Określa i wykonuje optymalnie rzutowaną metodę dla typu środowiska uruchomieniowego.

safe_cast (C++ Component Extensions)

typeid

(Tylko CLR) Pobiera obiekt Type, który zawiera opis danego typu lub obiektu.

typeid (C++ Component Extensions)

Declaratory

Następujące deklaratory typu instruują środowisko uruchomieniowe, aby automatycznie zarządzało okresem istnienia i usuwania obiektów przydzielonych.

Operator

Cel

Odwołanie

^

Deklaruje uchwyt do obiektu; oznacza to wskaźnik do Środowisko wykonawcze systemu Windows lub obiektu CLR, który jest automatycznie usuwany, gdy to nie jest już możliwe jego użycie.

Operator uchwytu do obiektu (^) (C++ Component Extensions)

%

Deklaruje odwołanie śledzenia; oznacza to odwołanie do Środowisko wykonawcze systemu Windows lub obiektu CLR, który jest automatycznie usuwany, gdy nie jest już możliwe jego użycie.

Operator odwołania śledzenia (C++ Component Extensions)

Dodatkowe konstrukcje i tematy pokrewne

Ta sekcja zawiera listę dodatkowych narzędzi programistycznych i tematy, które odnoszą się do środowiska CLR.

Temat

Opis

__identifier (C++/CLI)

(Środowisko wykonawcze systemu Windows i CLR) Umożliwia używanie słów kluczowych jako identyfikatorów.

Listy zmiennych argumentów (...) (C++/CLI)

(Środowisko wykonawcze systemu Windows i CLR) Włącza funkcję do podjęcia zmiennej liczby argumentów.

Odpowiedniki typów natywnych języka C++ w programie .NET Framework (C++/CLI)

Wyświetla listę typów CLR, które są używane zamiast zintegrowanych typów języka C++.

Modyfikator appdomain__declspec

Modyfikator __declspec oczekuje, że istnieją statyczne i globalne zmienne dla domeny appdomain.

Rzutowania w stylu C i kompilator /clr (C++/CLI)

Zawiera opis interpretowania rzutowań w stylu C.

Konwencja wywoływania __clrcall

Wskazuje konwencję wywołania zgodną ze specyfikacją CLR.

__cplusplus_cli

Wstępnie zdefiniowane makra

Atrybuty niestandardowe (C++)

Opisuje sposób definiowania własnych atrybutów CLR.

Obsługa wyjątków (C++ Component Extensions)

Dostarcza przeglądu obsługi wyjątków.

Jawne zastąpienia (C++ Component Extensions)

Demonstruje, jak funkcje członkowskie mogą zastąpić dowolnych członków.

Przyjazne zestawy (C++)

W tym artykule omówiono, jak zestaw klienta może uzyskać dostęp do wszystkich typów w składniku zestawu.

Boxing (C++ Component Extensions)

Demonstruje warunki, dla których typy wartości są zapakowane.

Obsługa cech typu w kompilatorze (C++ Component Extensions)

W tym artykule omówiono sposób wykrywania charakterystyk typów w czasie kompilacji.

Wyrażenia pragma zarządzane, niezarządzane.

Demonstruje, jak zarządzane lub niezarządzane funkcje mogą współistnieć w tym samym module.

Modyfikator proces__declspec

Modyfikator __declspec oczekuje, że istnieją statyczne i globalne zmienne dla procesu.

Odbicie (C++/CLI)

Pokazuje wersję CLR informacji czasu wykonywania typu.

Ciąg (C++ Component Extensions)

W tym artykule omówiono konwersję kompilatora literałów ciągów znaków na String.

Przekazywanie dalej typu (C++/CLI)

Umożliwia przemieszczenie typu z dostarczanego zestawu do innego zestawu, tak, aby kod klienta nie musi być ponownie kompilowany.

Atrybuty zdefiniowane przez użytkownika (C++ Component Extensions)

Pokazuje atrybuty zdefiniowane przez użytkownika.

#using — dyrektywa (C++)

Importuje zewnętrzne zestawy.

Dokumentacja XML (Visual C++)

Wyjaśnia dokumentację kodu opartą na języku XML za pomocą /doc (Przetwarzaj komentarze dokumentacji) (C/C++).

Zobacz też

Inne zasoby

Programowanie .NET w programie Visual C++

Współdziałanie natywne i .NET