C++类和子类的大小

Tia*_*sta 1 c++ memory oop

如果类实例使用20个字节,并且其子类使用24个字节,因为它作为更多成员,如何将子类的实例存储在父类的变量中?

喜欢:

Subclass s;
ParentClass p ;
p = s;
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 8

你没有"存储"实例"在"指针中.指针只指向内存中实例的开头.

指针对象本身包含一个内存地址,无论在该地址上找到什么或多少数据,它占用的空间总是相同的.


编辑 (因为问题几乎完全改变了)

在您添加到问题中的示例中,代码没有按照您的想法执行.你不是Subclass在一个存储ParentClass; 相反,你正在切断派生的位s,并只将其基本位复制到p.

你在别处问过你如何适应Derived一系列的Base; 你不能.


Kon*_*lph 6

指针大小始终相同.它只是指向更大的内存区域.

相比:

+-----+
| ptr | ------+
+-----+       |
              v
              +----------+
              | Base     |
              +----------+
Run Code Online (Sandbox Code Playgroud)

有:

+-----+
| ptr | ------+
+-----+       |
              v
              +----------+----+
              | Derived       |
              +----------+----+
Run Code Online (Sandbox Code Playgroud)

其中两种情况下的指针值都是虚构地址,其标记承载相应对象的存储区域的起始地址.