如果类实例使用20个字节,并且其子类使用24个字节,因为它作为更多成员,如何将子类的实例存储在父类的变量中?
喜欢:
Subclass s;
ParentClass p ;
p = s;
Run Code Online (Sandbox Code Playgroud)
你没有"存储"实例"在"指针中.指针只指向内存中实例的开头.
指针对象本身包含一个内存地址,无论在该地址上找到什么或多少数据,它占用的空间总是相同的.
编辑 (因为问题几乎完全改变了)
在您添加到问题中的示例中,代码没有按照您的想法执行.你不是Subclass在一个存储ParentClass; 相反,你正在切断派生的位s,并只将其基本位复制到p.
你在别处问过你如何适应Derived一系列的Base; 你不能.
指针大小始终相同.它只是指向更大的内存区域.
相比:
+-----+
| ptr | ------+
+-----+ |
v
+----------+
| Base |
+----------+
Run Code Online (Sandbox Code Playgroud)
有:
+-----+
| ptr | ------+
+-----+ |
v
+----------+----+
| Derived |
+----------+----+
Run Code Online (Sandbox Code Playgroud)
其中两种情况下的指针值都是虚构地址,其标记承载相应对象的存储区域的起始地址.