繁体   English   中英

C#中继承对象的内存分配

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM