ランタイム プラットフォームのコンポーネントの拡張機能
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 |
いいえ |
クラスを宣言します。 |
|
value class value struct |
いいえ |
値のクラスを宣言します。 |
|
interface class interface struct |
いいえ |
インターフェイスを宣言します。 |
|
enum class enum struct |
いいえ |
列挙型を宣言します。 |
|
property |
はい |
プロパティを宣言します。 |
|
delegate |
はい |
デリゲートを宣言します。 |
|
event |
はい |
イベントを宣言します。 |
オーバーライド指定子
派生にオーバーライドの動作を変更するには、次のキーワードを使用できます。new のキーワードは C++ の拡張機能ではありませんが、追加のコンテキストで使用できるので、次に示します。一部の指定子は、ネイティブなプログラミングにも有効です。詳細については、「方法: ネイティブ コンパイルのオーバーライド指定子を宣言します。」を参照してください。
Keyword |
状況依存の |
目的 |
参照 |
---|---|---|---|
abstract |
はい |
関数やクラスが抽象クラスであることを示します。 |
|
new |
いいえ |
関数は基本クラスのバージョンのオーバーライドではないことを示します。 |
|
override |
はい |
メソッドは基本クラスのバージョンのオーバーライドである必要があることを示します。 |
|
sealed |
はい |
クラスを基本クラスとして使用できません。 |
ジェネリックのキーワード
次のキーワードは、ジェネリックをサポートする型に追加されました。詳細については、「ジェネリック (C++ コンポーネント拡張)」を参照してください。
Keyword |
状況依存の |
目的 |
---|---|---|
generic |
いいえ |
ジェネリック型を宣言します。 |
where |
はい |
ジェネリック型パラメーターに適用される制約を指定します。 |
そのほかのキーワード
次のキーワードは C++ の拡張機能に追加されました。
Keyword |
状況依存の |
目的 |
参照 |
---|---|---|---|
finally |
はい |
既定の例外の handlings の動作を示します。 |
|
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 (のみ)、特定の型またはオブジェクトを表す System.Type のオブジェクトを取得します。 |
宣言子
次の型の宣言が自動的に割り当てられたオブジェクトの有効期間を管理および削除するようにランタイムに指示します。
[演算子] |
目的 |
参照 |
---|---|---|
^ |
オブジェクトへのハンドルを宣言します; つまり、使用できなくすると、が自動的に削除される Windows ランタイム または CLR オブジェクトへのポインター。 |
|
% |
トラッキング参照を宣言します; つまり、使用できなくすると、が自動的に削除される Windows ランタイム または CLR オブジェクトへの参照。 |
追加の構成要素と関連トピック
ここでは、追加のプログラミングの CLR に関連する構成要素とトピックの一覧を示します。
トピック |
説明 |
---|---|
Windows ランタイム (CLR) と識別子としてキーワードの使用を有効にします。 |
|
(Windows ランタイム および CLR) 関数が可変個の引数を受け取ることができます。 |
|
C++ のすべての種類の代わりに使用される CLR 型を示します。 |
|
appdomain__declspec 修飾子 |
__declspec 修飾子が appdomain ごとについて、静的およびグローバル変数です。 |
C スタイルのキャストがどのように解釈されるかを説明します。 |
|
呼び出し規約__clrcall |
CLR 準拠の呼び出し規約を示します。 |
__cplusplus_cli |
|
独自の CLR 属性を定義する方法について説明します。 |
|
例外処理の概要を説明します。 |
|
メンバー関数が、任意のメンバーをオーバーライドしようとします。 |
|
アセンブリがすべてにアクセスできるクライアントがアセンブリのコンポーネントをどのように入力するかについて説明します。 |
|
値の型をボックス化要件を示します。 |
|
コンパイル時に型の特徴を検出する方法について説明します。 |
|
managed, unmanaged のプラグマ |
マネージ関数とアンマネージ関数を同じモジュールにおける共存できるかを示します。 |
process__declspec 修飾子 |
__declspec 修飾子は、プロセスごとについて、静的およびグローバル変数です。 |
ランタイムの型情報の CLR バージョンを示します。 |
|
Stringにリテラル文字列のコンパイラの変換について説明します。 |
|
クライアント コードを再コンパイルする必要がないように、別のアセンブリへのアセンブリの出荷時の型の移動を有効にします。 |
|
ユーザー定義の属性が表示されます。 |
|
外部アセンブリをインポートします。 |
|
/doc (ドキュメント コメントの処理) (C/C++)を使用して XML ベースのコード ドキュメントについて説明します |