Share via


__abstract

 

発行: 2016年4月

注意

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

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

構文

__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();
}