継承のキーワード
Microsoft 固有の仕様 →
class [__single_inheritance] class-name;
class [__multiple_inheritance] class-name;
class [__virtual_inheritance] class-name;
それぞれの文字について以下に説明します。
- クラス名
宣言されるクラスの名前。
C++ はクラス定義の前にクラス メンバーへのポインターを宣言できます。次に例を示します。
class S;
int S::*p;
上のコードではp クラスはS の整数メンバーへのポインターとして宣言されます。ただしclass S はこのコードでまだ定義されていない ; これは宣言されました。コンパイラがこのようなポインターを検出するとポインターの一般的な表現する必要があります。表現のサイズは指定された継承モデルに依存します。コンパイラに継承モデルを指定する方法が 4 つあります :
*** Pointer-to-member representation *** の IDE
/vmg スイッチを使用してコマンド ライン
pointers_to_members のプラグマを使用します
継承のキーワード __single_inheritance__multiple_inheritance と __virtual_inheritance を使用します。この方法は基本のクラスの継承モデルを制御します。
[!メモ]
クラスのメンバーとクラスを定義したらポインターを常に宣言するとこれらのオプションを使用する必要はありません。
クラス定義の前のクラス メンバーへのポインターを宣言すると作成される実行可能ファイルのサイズおよび速度に影響します。より複雑なクラスは継承によって使用されるクラスを超えるのメンバーへのポインターを表すために必要なバイト数ポインターを解釈するために必要なコード。単一継承は最小限の複合体であり仮想継承は複雑です。
上記の例が変更されている場合 :
class __single_inheritance S;
int S::*p;
コマンド ライン オプションやプラグマに関係なくclass S のメンバーへのポインターは妥当な表現を使用します。
[!メモ]
クラスのメンバーへのポインター表現の事前宣言はクラスのメンバーへのポインターを宣言する場合はその宣言が発生するように翻訳単位にメンバーへのポインターが宣言される前に発生します。
終了 Microsoft 固有の仕様→