1

嘿,我对某事感到好奇。如果我在一个方法中创建一个派生类,然后返回一个指向基类的指针,并且所有其他指向它是派生类这一事实的引用都会消失,这会阻止垃圾收集器对作为派生的一部分的变量进行垃圾收集班级?如果没有任何东西指向派生类变量,那么该内存是否会立即释放?

如果我然后将基类指针转换回派生类,这是否意味着派生类变量中的数据可能不再存在?

4

1 回答 1

5

在 C++ 的实现中,指向“作为派生类”的对象的指针和指向“作为基类”的同一对象的指针被实现为不同的指针是很常见的。在 CLR 中情况并非如此。当您将对派生类的引用转换为对基类的引用时,引用的位不会改变。每个引用都“知道”它自己的运行时类型,因此垃圾收集器永远不会感到困惑。

于 2013-03-08T05:03:16.233 回答