__abstract

注意

このトピックは、C++ マネージ拡張のバージョン 1 にのみ対応しています。この構文は、バージョン 1 のコードを保守するためだけに使用してください。新しい構文で同等の機能を使用する方法については、「abstract (C++ コンポーネント拡張)」を参照してください。

直接インスタンス化することができないマネージ クラスを宣言します。

__abstract class-specifier 
__abstract struct-specifier

解説

__abstract キーワードは、対象クラスが他のクラスの基底クラスとしてのみ使用できることを宣言します。 クラスまたは構造体に __abstract を適用することは、結果が __gc クラスまたは __gc 構造体であることを意味しません。

抽象基底クラスの C++ の概念とは異なり、__abstract キーワードを持つクラスはクラスのメンバー関数を定義できます。

注意

__abstract キーワードは、__value キーワードまたは __sealed キーワードを使用している場合は使用できず、__interface キーワードを使用している場合は冗長です。

使用例

次の例では、Derived クラスが抽象基底クラス (Base) から派生します。 その後、両方に対してインスタンス化が試みられますが、Derived だけが成功します。

// keyword__abstract.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>

__abstract __gc class Base {
   int BaseFunction() {
      return 0;
   }
};

__gc class Derived: public Base {};

int main() {
   Base* MyBase = new Base();   // C3622 can't BAse is abstract
   Derived* MyDerived = new Derived();
}