執行階段平台的元件擴充功能
Visual C++ 提供語言擴充功能可協助您進行執行階段平台。 使用 Visual C++ 元件擴充功能 (C++/CX),您可以在編譯成機器碼的 Windows 市集 應用程式和元件上寫程式。 雖然您可以使用 C++/CX,透過直接對 COM 介面Windows 執行階段程式設計建立 Windows 市集 應用程式 ,但是,您可以使用建構函式、例外狀況和其他現代 C++ 程式設計慣用語一起使用。 若要在 .NET 平台的管理執行環境的啟用 C++ 程式設計,您可以使用 C++/CLI。
兩個執行階段,一組擴充功能
C++/CX 是 C++/CLI 的子集。 對 C++/CX 和 C++/CLI 通用擴充功能的語意,在於您是否取決於 Common Language Runtime (CLR) 或 Windows 執行階段。 若要編譯您的應用程式在 Windows 執行階段中,請指定 /ZW 編譯器選項。 若要編譯它在 CLR,請指定 /clr 編譯器選項。 當您使用 Visual Studio 建置專案時,這些參數會自動設定。
如需如何在 C++ 中建立 Windows 市集 應用程式的詳細資訊,請參閱 Roadmap for Windows Store apps using C++。
C++/CLI 擴充 ISO/ANSI C++ 標準及根據 Ecma C++/CLI Standard 定義。 如需詳細資訊,請參閱以 Visual C++ 進行 .NET 程式設計。
資料型別關鍵字
語言擴充功能包含 彙總關鍵字,它是包括兩個語彙基元且以空白字元分隔的關鍵字。 語彙基元可能會有一個表示何時個別使用的意義,和一個何時一起使用的另一個意義。 例如,文字「ref」是泛型的識別碼,文字「class」是宣告原生類別的關鍵字。 但是,當這些文字組合成 ref class時,發生的彙總關鍵字會宣告為的執行階段類別的實體,就像 runtime class。
擴充功能也包含 敏感性內容 關鍵字。 關鍵字視為敏感性內容,取決於包含該陳述式的位置的陳述式。 例如,語彙基元「屬性」可以是識別碼,也可以宣告成一種特殊的公用類別成員。
下表列出在 C++ 語言擴充功能的關鍵字。
Keyword |
敏感性內容 |
用途 |
參考資料 |
---|---|---|---|
ref class ref struct |
否 |
宣告一個類別 |
|
value class value struct |
否 |
宣告實值類別。 |
|
interface class interface struct |
否 |
宣告一個介面 |
|
enum class enum struct |
否 |
宣告列舉型別 |
|
property |
是 |
宣告一個屬性。 |
|
delegate |
是 |
宣告一個委派。 |
|
event |
是 |
宣告事件。 |
覆寫規範
您可以使用下列關鍵字在衍生限定覆寫行為。 雖然 new 關鍵字不是 C++ 的擴充功能,但因為可以用於其他內容,所以在此列出。 某些規範為原生程式設計也是有效的。 如需詳細資訊,請參閱How to: 宣告在原生的編譯中的覆寫規範。
Keyword |
敏感性內容 |
用途 |
參考資料 |
---|---|---|---|
abstract |
是 |
表示函式的指令或類別是抽象的。 |
|
new |
否 |
表示函式不是基底類別版本的覆寫。 |
|
override |
是 |
表示方法必須是基底類別版本的覆寫。 |
|
sealed |
是 |
防止類別當做基底類別使用。 |
泛型的關鍵字
下列關鍵字已加入至支援泛型型別。 如需詳細資訊,請參閱泛型 (C++ 元件擴充功能)。
Keyword |
敏感性內容 |
用途 |
---|---|---|
generic |
否 |
宣告泛型型別。 |
where |
是 |
指定套用至泛型型別參數的條件約束。 |
其他關鍵字
下列關鍵字已加入至 C++ 擴充功能。
Keyword |
敏感性內容 |
用途 |
參考資料 |
---|---|---|---|
finally |
是 |
表示預設的例外狀況處理行為。 |
|
for each, in |
否 |
列舉項目的集合。 |
|
gcnew |
否 |
在記憶體回收堆積中配置類型。 可以代替 new 和 delete 。 |
|
ref new |
是 |
指派一個 Windows 執行階段 型別。 可以代替 new 和 delete 。 |
|
initonly |
是 |
表示成員只能在宣告或在靜態建構函式下初始化。 |
|
literal |
是 |
建立一個常值變數。 |
|
nullptr |
否 |
表示控制代碼或指標不會指向物件。 |
範本建構
下列語言建構會實作為範本,而不是關鍵字。 如果您指定 /ZW 編譯器選項,它們會在 lang 命名空間中定義。 如果您指定 /clr 編譯器選項,它們會在 cli 命名空間中定義。
Keyword |
用途 |
參考資料 |
---|---|---|
array |
宣告一個陣列 |
|
interior_ptr |
(僅限 CLR) 指向參考型別的資料。 |
|
pin_ptr |
(僅限 CLR) 指向暫時隱藏記憶體回收系統的 CLR 參考型別。 |
|
safe_cast |
判斷並執行在執行階段型別的最佳轉換方法。 |
|
typeid |
(僅限 CLR) 擷取描述特定型別或物件的 Type 物件。 |
宣告子
下列型別宣告子指示執行階段自動處理物件配置的存留期和刪除。
運算子 |
用途 |
參考資料 |
---|---|---|
^ |
宣告物件的控制代碼;即當無法再使用時,會自動刪除的 Windows 執行階段 或 CLR 物件的指標,。 |
|
% |
宣告追蹤參考;即當無法再使用時,會自動刪除的 Windows 執行階段 或 CLR 物件的參考。 |
其他建構與相關主題
本節列出其他程式設計與 CLR 的建構和主題。
主題 |
描述 |
---|---|
(Windows 執行階段 和 CLR) 可以使用關鍵字做為識別碼。 |
|
(Windows 執行階段 和 CLR) 可以讓函式接受引數的變數數字。 |
|
列出在 C++ 整數型別位置使用的 CLR 型別。 |
|
appdomain __declspec 修飾詞 |
命令該靜態或全域變數的__declspec 修飾詞存在在每個 appdomain。 |
描述 C-Style 轉換方式。 |
|
__clrcall 呼叫慣例 |
表示 CLR 相容的呼叫慣例。 |
__cplusplus_cli |
|
描述如何定義您自己的 CLR 屬性。 |
|
提供例外處理的概述。 |
|
示範成員函式如何覆寫選擇性成員。 |
|
討論用戶端組件如何存取組件中元件的所有型別。 |
|
示範實值型別進行封裝處理的條件。 |
|
討論在編譯時期如何偵測型別的特性。 |
|
managed、unmanaged 編譯注解 |
示範 managed 和 unmanaged 函式如何在同一模組可以共存。 |
處理序 __declspec 修飾詞 |
命令該靜態或全域變數的__declspec 修飾詞存在在每個流程。 |
示範執行階段型別資訊的 CLR 版本。 |
|
討論字串常值到 String 的編譯器轉換。 |
|
啟用一種型別移至傳輸組件的另一個組件,讓用戶端程式碼不需要重新編譯。 |
|
示範使用者定義的屬性。 |
|
匯入外部組件。 |
|
使用 /doc (處理文件註解) (C/C++),來解釋以 XML 為基礎的程式碼文件 |