繁体   English   中英

C ++编译器如何知道具有超类的对象的大小

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

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