この文書の現在のバージョンと選択したバージョンの差分を表示します。
cli:abstract_sealed [2009/01/31 15:27] 192.168.0.63 作成 |
cli:abstract_sealed [2013/12/23 09:08] |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== abstract, sealed ====== | ||
- | |||
- | abstract, sealedという2つキーワードが追加されています。ここではこれらをクラス修飾に用いた場合の説明です。 | ||
- | |||
- | 以下のようにクラスCをabstractにすると、そのクラスをインスタンス化することができなくなります。 | ||
- | |||
- | <code cpp> | ||
- | ref class C abstract { | ||
- | int i; | ||
- | }; | ||
- | int main() { | ||
- | C c; // error | ||
- | C^ d = gcnew C; // error | ||
- | } | ||
- | </code> | ||
- | |||
- | sealedをつかってクラスを定義すると、そのクラスから継承することができなくなります。 | ||
- | |||
- | <code cpp> | ||
- | ref class D sealed { | ||
- | int i; | ||
- | }; | ||
- | ref class D2 : D // error | ||
- | { | ||
- | }; | ||
- | int main() { | ||
- | } | ||
- | </code> | ||
- | abstractとsealedを両方指定することもできます。この場合クラスはインスタンス化することも継承することもできなくなります。staticなメンバーのみ持つクラスに指定する場合があります。 |