abstract, sealed

abstract, sealedという2つキーワードが追加されています。ここではこれらをクラス修飾に用いた場合の説明です。

以下のようにクラスCをabstractにすると、そのクラスをインスタンス化することができなくなります。

ref class C abstract {
    int i;
};
int main() {
    C c;  // error
    C^ d = gcnew C;  // error
}

sealedをつかってクラスを定義すると、そのクラスから継承することができなくなります。

ref class D sealed {
    int i;
};
ref class D2 : D  // error
{
};
int main() {
}

abstractとsealedを両方指定することもできます。この場合クラスはインスタンス化することも継承することもできなくなります。staticなメンバーのみ持つクラスに指定する場合があります。