5.表記慣習
この標準中には標準C++からの様々な文章の断片が逐語的に現れます。この C++/CLI 標準で標準 C++ は、追加にアンダーラインを、打ち消し線に削除を使って言及されます。
例えば:
演算子へのルールは標準C++からはそれほど変更されずに残っていますが、標準C++(SS 13.5/6)の次のルールは静的メンバ関数を許すために言及されます。
「静的メンバ、ないし、非静的メンバ演算子関数は非静的メンバ関数か、非メンバ関数のどちらでもありうるべきであり、
その型がクラス、クラスへの参照、クラスへのハンドル、列挙、列挙への参照、ないし、
列挙へのハンドルである少なくとも一つのパラメータとして持つべきです」
特に注記されない限り、次のような名前がそれらの対応する種類を端的に示すために使われます。
- I はインターフェイス・クラス
- N はネイティブ型
- R はref型クラス
- S は単純値型
- V は値型
CLI は、その多くが定着している C++ で実演されているものと異なる名前表記セットを持っています。
CLI表記はこの標準を通して使われています。
追記E 参照。
多くのソースコード例が CLI 名前空間の System に提供された便宜的な名前を利用しています。
しかしながら、その名前空間は明示的に参照されていません。
その代わりに、それらの例の各々の先頭には、using namespace System; が実装されているものとします。
同様に、cout を使っているものは iostream ヘッダがインクルードされ、それぞれの例の先頭に using namespace std; が宣言されているものと仮定します。
多くの例では C++/CLI ソースコードはメタデータに対応して示されています。
解説としての目的を果たすため、基本的な C++ 型とメタデータ型との間の特定の対応が仮定されています。
しかし、そのマッピングは実装に一致して使われている必要はありません。
例えば、int 型はSystem::Int32 に配置されていると示されます。(それはメタデータでは int32 で示されます。)
例中では、C++/CLI ソースコードは固定長フォントで記述されており、対応するメタデータは同じフォントですが背景をグレイに網掛けして記述されています。
例としては、
public ref struct D : B {
ref class R { ... };
};
.class public auto ansi D extends B {
.class auto ansi nested public R extends [mscorlib]System.Object { ... }
}