共用方式為


執行階段平台的元件擴充功能

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

宣告一個類別

類別和結構 (C++ 元件擴充功能)

value class

value struct

宣告實值類別。

類別和結構 (C++ 元件擴充功能)

interface class

interface struct

宣告一個介面

interface class (C++ 元件擴充功能)

enum class

enum struct

宣告列舉型別

enum class (C++ 元件擴充功能)

property

宣告一個屬性。

property (C++ 元件擴充功能)

delegate

宣告一個委派。

delegate (C++ 元件擴充功能)

event

宣告事件。

event (C++ 元件擴充功能)

覆寫規範

您可以使用下列關鍵字在衍生限定覆寫行為。 雖然 new 關鍵字不是 C++ 的擴充功能,但因為可以用於其他內容,所以在此列出。 某些規範為原生程式設計也是有效的。 如需詳細資訊,請參閱How to: 宣告在原生的編譯中的覆寫規範

Keyword

敏感性內容

用途

參考資料

abstract

表示函式的指令或類別是抽象的。

abstract (C++ 元件擴充功能)

new

表示函式不是基底類別版本的覆寫。

new (vtable 中的新位置) (C++ 元件擴充功能)

override

表示方法必須是基底類別版本的覆寫。

override (C++ 元件擴充功能)

sealed

防止類別當做基底類別使用。

sealed (C++ 元件擴充功能)

泛型的關鍵字

下列關鍵字已加入至支援泛型型別。 如需詳細資訊,請參閱泛型 (C++ 元件擴充功能)

Keyword

敏感性內容

用途

generic

宣告泛型型別。

where

指定套用至泛型型別參數的條件約束。

其他關鍵字

下列關鍵字已加入至 C++ 擴充功能。

Keyword

敏感性內容

用途

參考資料

finally

表示預設的例外狀況處理行為。

例外狀況處理 (C++ 元件擴充功能)

for each, in

列舉項目的集合。

針對每一個,在

gcnew

在記憶體回收堆積中配置類型。 可以代替 newdelete

ref new 和 gcnew (C++ 元件擴充功能)

ref new

指派一個 Windows 執行階段 型別。 可以代替 newdelete

ref new 和 gcnew (C++ 元件擴充功能)

initonly

表示成員只能在宣告或在靜態建構函式下初始化。

initonly

literal

建立一個常值變數。

literal (C++ 元件擴充功能)

nullptr

表示控制代碼或指標不會指向物件。

nullptr (C++ 元件擴充功能)

範本建構

下列語言建構會實作為範本,而不是關鍵字。 如果您指定 /ZW 編譯器選項,它們會在 lang 命名空間中定義。 如果您指定 /clr 編譯器選項,它們會在 cli 命名空間中定義。

Keyword

用途

參考資料

array

宣告一個陣列

陣列 (C++ 元件擴充功能)

interior_ptr

(僅限 CLR) 指向參考型別的資料。

interior_ptr (C++/CLI)

pin_ptr

(僅限 CLR) 指向暫時隱藏記憶體回收系統的 CLR 參考型別。

pin_ptr (C++/CLI)

safe_cast

判斷並執行在執行階段型別的最佳轉換方法。

safe_cast (C++ 元件擴充功能)

typeid

(僅限 CLR) 擷取描述特定型別或物件的 Type 物件。

typeid (C++ 元件擴充功能)

宣告子

下列型別宣告子指示執行階段自動處理物件配置的存留期和刪除。

運算子

用途

參考資料

^

宣告物件的控制代碼;即當無法再使用時,會自動刪除的 Windows 執行階段 或 CLR 物件的指標,。

物件控制代碼運算子 (^) (C++ 元件擴充功能)

%

宣告追蹤參考;即當無法再使用時,會自動刪除的 Windows 執行階段 或 CLR 物件的參考。

追蹤參考運算子 (C++ 元件擴充功能)

其他建構與相關主題

本節列出其他程式設計與 CLR 的建構和主題。

主題

描述

__identifier (C++/CLI)

(Windows 執行階段 和 CLR) 可以使用關鍵字做為識別碼。

變數引數清單 (...) (C++/CLI)

(Windows 執行階段 和 CLR) 可以讓函式接受引數的變數數字。

C++ 原生類型的 .NET Framework 對應項 (C++/CLI)

列出在 C++ 整數型別位置使用的 CLR 型別。

appdomain __declspec 修飾詞

命令該靜態或全域變數的__declspec 修飾詞存在在每個 appdomain。

使用 /clr 進行 C-Style 轉換 (C++/CLI)

描述 C-Style 轉換方式。

__clrcall 呼叫慣例

表示 CLR 相容的呼叫慣例。

__cplusplus_cli

預先定義的巨集

自訂屬性 (C++)

描述如何定義您自己的 CLR 屬性。

例外狀況處理 (C++ 元件擴充功能)

提供例外處理的概述。

明確覆寫 (C++ 元件擴充功能)

示範成員函式如何覆寫選擇性成員。

Friend 組件 (C++)

討論用戶端組件如何存取組件中元件的所有型別。

Boxing (C++ 元件擴充功能)

示範實值型別進行封裝處理的條件。

類型特性的編譯器支援 (C++ 元件擴充功能)

討論在編譯時期如何偵測型別的特性。

managed、unmanaged 編譯注解

示範 managed 和 unmanaged 函式如何在同一模組可以共存。

處理序 __declspec 修飾詞

命令該靜態或全域變數的__declspec 修飾詞存在在每個流程。

反映 (C++/CLI)

示範執行階段型別資訊的 CLR 版本。

字串 (C++ 元件擴充功能)

討論字串常值到 String 的編譯器轉換。

類型轉送 (C++/CLI)

啟用一種型別移至傳輸組件的另一個組件,讓用戶端程式碼不需要重新編譯。

使用者定義屬性 (C++ 元件擴充功能)

示範使用者定義的屬性。

#using 指示詞 (C++)

匯入外部組件。

XML 文件 (Visual C++)

使用 /doc (處理文件註解) (C/C++),來解釋以 XML 為基礎的程式碼文件

請參閱

其他資源

以 Visual C++ 進行 .NET 程式設計

原生和 .NET 互通性