ランタイム プラットフォームのコンポーネントの拡張機能

Visual C++ では、実行時プラットフォームをプログラミングするために、拡張機能を提供します。Visual C++ コンポーネント拡張 (C++/CX) を使用して、ネイティブ コードにコンパイルされたコンポーネントと Windows ストア の apps をプログラミングできます。直接、Windows ランタイム の COM インターフェイスに対するプログラムによって C++/CXを使用して Windows ストア の apps コンストラクターを作成できますが、例外およびそのほかの最新の C++ プログラミングの方法を使用できます。.NET プラットフォームのマネージ実行環境で C++ プログラミングを有効にするには C++/CLIを使用できます。

2 ランタイム、1 セットの拡張子

C++/CX は C++/CLI のサブセットです。C++/CX と C++/CLIに共通の拡張機能のために、共通言語ランタイム Windows ランタイム(CLR) やターゲットにするかどうか、セマンティクスはによって異なります。独自のアプリケーションを Windows ランタイムで実行されるようにコンパイルするには /ZW のコンパイラ オプションを指定します。これを CLR で実行されるようにコンパイルするには /clr のコンパイラ オプションを指定します。これらのスイッチは、プロジェクトを作成するために Visual Studio を使用すると、自動的に設定されます。

C++ の Windows ストア の apps を作成する方法の詳細については、Roadmap for Windows Store apps using C++を参照してください。

C++/CLI は ISO/ANSI C++ 標準を拡張し、" C++/CLI の標準で定義されます。詳細については、「Visual C++ での .NET プログラミング」を参照してください。

データ型のキーワード

言語拡張機能は、スペースで区切られた 2 種類のトークンから成るキーワードの Aggregate キーワードが含まれています。トークンは一緒に使用すると、別に使用すると、別の意味が可能性があることを意味する 1 とおりあります。たとえば、「ref」は、通常の識別子であり、単語「クラス」ネイティブ クラスを宣言するキーワードです。ただし、ref classを構成するために、これらの単語を結合するときの集約キーワードは、ランタイム クラスと呼ばれるエンティティを宣言します。

拡張機能には、状況依存の キーワードが含まれています。キーワードは、それを含む、そのステートメントに配置処理の種類のステートメントで状況依存のようにします。たとえば、トークン「プロパティ」を識別子であったり、特殊なパブリック クラスのメンバーを宣言できます。

次の表は、C++ 言語拡張子のキーワードの一覧を示します。

Keyword

状況依存の

目的

参照

ref class

ref struct

いいえ

クラスを宣言します。

クラスと構造体 (C++ コンポーネント拡張)

value class

value struct

いいえ

値のクラスを宣言します。

クラスと構造体 (C++ コンポーネント拡張)

interface class

interface struct

いいえ

インターフェイスを宣言します。

インターフェイス クラス (C++ コンポーネント拡張)

enum class

enum struct

いいえ

列挙型を宣言します。

enum クラス (C++ コンポーネント拡張)

property

はい

プロパティを宣言します。

プロパティ (C++ コンポーネント拡張)

delegate

はい

デリゲートを宣言します。

delegate (C++ コンポーネント拡張)

event

はい

イベントを宣言します。

event (C++ コンポーネント拡張)

オーバーライド指定子

派生にオーバーライドの動作を変更するには、次のキーワードを使用できます。new のキーワードは C++ の拡張機能ではありませんが、追加のコンテキストで使用できるので、次に示します。一部の指定子は、ネイティブなプログラミングにも有効です。詳細については、「方法: ネイティブ コンパイルのオーバーライド指定子を宣言します。」を参照してください。

Keyword

状況依存の

目的

参照

abstract

はい

関数やクラスが抽象クラスであることを示します。

abstract (C++ コンポーネント拡張)

new

いいえ

関数は基本クラスのバージョンのオーバーライドではないことを示します。

new (vtable の新しいスロット) (C++ コンポーネント拡張)

override

はい

メソッドは基本クラスのバージョンのオーバーライドである必要があることを示します。

override (C++ コンポーネント拡張)

sealed

はい

クラスを基本クラスとして使用できません。

sealed (C++ コンポーネント拡張)

ジェネリックのキーワード

次のキーワードは、ジェネリックをサポートする型に追加されました。詳細については、「ジェネリック (C++ コンポーネント拡張)」を参照してください。

Keyword

状況依存の

目的

generic

いいえ

ジェネリック型を宣言します。

where

はい

ジェネリック型パラメーターに適用される制約を指定します。

そのほかのキーワード

次のキーワードは C++ の拡張機能に追加されました。

Keyword

状況依存の

目的

参照

finally

はい

既定の例外の handlings の動作を示します。

例外処理 (C++ コンポーネント拡張)

for each, in

いいえ

コレクションの要素を列挙します。

各について、

gcnew

いいえ

ガベージ コレクション ヒープの型を割り当てます。newdeleteの代わりにを使用します。

ref new、gcnew (C++ コンポーネント拡張)

ref new

はい

Windows ランタイム の型を割り当てます。newdeleteの代わりにを使用します。

ref new、gcnew (C++ コンポーネント拡張)

initonly

はい

メンバーを宣言または静的コンストラクターでしか初期化できないことを示します。

initonly

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 (のみ)、特定の型またはオブジェクトを表す System.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 ごとについて、静的およびグローバル変数です。

C スタイル キャストと /clr (C++/CLI)

C スタイルのキャストがどのように解釈されるかを説明します。

呼び出し規約__clrcall

CLR 準拠の呼び出し規約を示します。

__cplusplus_cli

定義済みマクロ

カスタム属性 (C++)

独自の CLR 属性を定義する方法について説明します。

例外処理 (C++ コンポーネント拡張)

例外処理の概要を説明します。

明示的なオーバーライド (C++ コンポーネント拡張)

メンバー関数が、任意のメンバーをオーバーライドしようとします。

フレンド アセンブリ (C++)

アセンブリがすべてにアクセスできるクライアントがアセンブリのコンポーネントをどのように入力するかについて説明します。

ボックス化 (C++ コンポーネント拡張)

値の型をボックス化要件を示します。

型の特徴のコンパイラ サポート (C++ コンポーネント拡張)

コンパイル時に型の特徴を検出する方法について説明します。

managed, unmanaged のプラグマ

マネージ関数とアンマネージ関数を同じモジュールにおける共存できるかを示します。

process__declspec 修飾子

__declspec 修飾子は、プロセスごとについて、静的およびグローバル変数です。

リフレクション (C++/CLI)

ランタイムの型情報の CLR バージョンを示します。

文字列 (C++ コンポーネント拡張)

Stringにリテラル文字列のコンパイラの変換について説明します。

型の転送 (C++/CLI)

クライアント コードを再コンパイルする必要がないように、別のアセンブリへのアセンブリの出荷時の型の移動を有効にします。

ユーザー定義の属性 (C++ コンポーネント拡張)

ユーザー定義の属性が表示されます。

#using ディレクティブ (C++)

外部アセンブリをインポートします。

XML に関するドキュメント (Visual C++)

/doc (ドキュメント コメントの処理) (C/C++)を使用して XML ベースのコード ドキュメントについて説明します

参照

その他の技術情報

Visual C++ での .NET プログラミング

ネイティブと .NET の相互運用性