この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
トラッキング参照 [2009/01/31 12:40] admin |
— (現在) | ||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== トラッキング参照 ====== | ||
- | |||
- | C++の参照のCLR版がトラッキング参照です。その名前のとおり参照先を追跡できる参照です。マネージヒープ上にあるインスタンスはGCによって移動するので、それを追跡できるという意味でトラッキングという名前になっていると思われます。 | ||
- | |||
- | ハンドルは、C++のポインタと同じように=で値を代入できます。 | ||
- | <code cpp> | ||
- | C^ a = gcnew C; | ||
- | C^ b = a; | ||
- | C^ c; | ||
- | c = b; | ||
- | </code> | ||
- | |||
- | ハンドルa,b,cは同じインスタンスを参照します。 | ||
- | |||
- | トラッキング参照はC++の参照のように、初期化時のみ値を設定できます。 | ||
- | |||
- | ハンドルは「何も参照してない状態」として、nullptrを代入できますが、トラッキング参照はC++の参照ように、そのような概念はありません。 | ||
- | |||
- | トラッキング参照は%を使って宣言します。 | ||
- | <code cpp> | ||
- | C^ a = gcnew C; | ||
- | C% t = *a; | ||
- | C% u; // エラー 初期化が必要 | ||
- | C^% v = a; | ||
- | C^ b = gcnew C; | ||
- | t = *b; // エラー 再設定不可 | ||
- | </code> |