[英]How does C++ compiler know the size of a object with superclasses
正如问题所述!
假设我有以下代码段
class A
{
int x;
int y;
}
class B : public A
{
int z;
}
class C
{
A a;
public C(A a) : a(a){}
}
如果我用B类调用C的构造函数会发生什么,它会复制它在类中的部分数据吗? 或者还保留它的B数据?
提前致谢! 这可能是一个愚蠢的问题,但我实际上从未理解过。
如果将B
的实例传递给采用A
by值的C
构造函数,则B
实例将被切片,并且只保留A
部分。 所以:
它会复制它在课堂上的部分数据吗?
这个。
所以,具体而言,没有办法打开C::a
构件回一个B
实例具有相同值用于z
作为原始B
实例-该信息具有(不可逆的)切片操作过程中丢失了。
如果我用B类调用C的构造函数会发生什么,它会复制它在类中的部分数据吗?
是。 这称为切片 - 参数是使用A
的复制构造函数创建的,它只复制A
子对象。
或者还保留它的B数据?
没有。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.