この文書の現在のバージョンと選択したバージョンの差分を表示します。
cli:ref_class [2009/01/31 12:26] admin |
cli:ref_class [2013/12/23 09:08] |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== ref class ====== | ||
- | |||
- | ref classで定義されたクラスは、つねにマネージヒープ上に作られます。スタック上に作ったように見えても、実際はマネージヒープ上に作られます。 | ||
- | |||
- | gcnewを使ってインスタンスを作成した場合、^を使って参照として受け取ります。これをハンドルといいます。 | ||
- | |||
- | <code cpp> | ||
- | ref class C { | ||
- | int i; | ||
- | int j; | ||
- | public: | ||
- | C() { | ||
- | } | ||
- | ~C() { | ||
- | } | ||
- | !C() { | ||
- | } | ||
- | }; | ||
- | int main() | ||
- | { | ||
- | C^ a = gcnew C; | ||
- | C^ b = gcnew C; | ||
- | C c; | ||
- | { | ||
- | C d; | ||
- | } // d.~C()が呼ばれます。 | ||
- | | ||
- | delete a; // a->~C()が呼ばれます。 | ||
- | } // c.~C()が呼ばれます。 | ||
- | // b.!C()が呼ばれます。 | ||
- | </code> |