[英]Memory allocation for object in inheritance in C#
我对在继承的情况下如何完成对象分配感到困惑,请考虑以下代码。
class Base
{
}
class Derived : Base
{
// some code
}
如果我们这样做,从主要
Derived d = new Derived();
和
Base b = new Derived();
堆中两种情况的内存分配是什么。 派生对象是在基础对象内部还是它们彼此相邻
两个对象的内存分配看起来完全相同。 两个对象都是Derived
相同的类型。
当然,每个对象都将在堆上的自己的空间中分配。
创建对象时的重要性是用于构造对象的类(类型),而不是存储对象的引用类型。
每个对象都作为完整实体存在,但您可以将其视为从其继承的所有类中的所有部分的摘要。 在某种程度上, Derived
对象实例包含Base
对象实例。 不是相反。
在这两种情况下,您都会实例化具体Derived类的对象,因此两者的内存占用量相同 - 您使用Base和Derived类的引用来引用它们,但是您可以在两个cades中实例化Derived类。
但是,为您的问题提供一般答案 - 是的,在派生类的内存实例中包含其基类的所有成员。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.