1

ねえ、私は何かについて興味があります。メソッドで派生クラスを作成し、基本クラスへのポインターを返すと、それが派生クラスであるという事実への他のすべての参照が消え、ガベージコレクターが派生の一部である変数をガベージコレクションするのを妨げますクラス?派生したクラス変数を指すものが何もない場合、そのメモリはすぐに解放されますか?

次に、基本クラスのポインターを派生クラスにキャストすると、派生クラス変数のデータが存在しなくなる可能性がありますか?

4

1 に答える 1

5

C ++の実装では、「派生クラスとして」オブジェクトへのポインタと「基本クラスとして」同じオブジェクトへのポインタが異なるポインタとして実装されるのはかなり一般的です。これはCLRには当てはまりません。派生クラスへの参照を基本クラスへの参照にキャストしても、参照のビットは変更されません。すべての参照は独自のランタイムタイプを「認識」しているため、ガベージコレクターが混乱することはありません。

于 2013-03-08T05:03:16.233 に答える