__super

Microsoft 固有の仕様

オーバーライドする関数について、基底クラス実装を呼び出すことを明示できます。

構文

__super::member_function();

解説

オーバーロード解決フェーズ時にすべてのアクセス可能な基底クラス メソッドが考慮され、最優先の一致を示す関数が呼び出されます。

__super は、メンバー関数の本体内でのみ使用できます。

__super using 宣言と共に使用することはできません。 詳細については、「using 宣言」をご覧ください。

コードを挿入する属性を導入すると、呼び出す必要があるメソッドを含む 1 つ以上の名前がわからない基底クラスがコードに含まれる可能性があります。

// deriv_super.cpp
// compile with: /c
struct B1 {
   void mf(int) {}
};

struct B2 {
   void mf(short) {}

   void mf(char) {}
};

struct D : B1, B2 {
   void mf(short) {
      __super::mf(1);   // Calls B1::mf(int)
      __super::mf('s');   // Calls B2::mf(char)
   }
};

Microsoft 固有の仕様はここまで

関連項目

キーワード