正如问题所述!
假设我有以下代码段
class A
{
int x;
int y;
}
class B : public A
{
int z;
}
class C
{
A a;
public C(A a) : a(a){}
}
Run Code Online (Sandbox Code Playgroud)
如果我用B类调用C的构造函数会发生什么,它会复制它在类中的部分数据吗?或者还保留它的B数据?
提前致谢!这可能是一个愚蠢的问题,但我实际上从未理解过.
如果将实例传递B给C带有Aby值的构造函数,则B实例将被切片,只剩下该A部分.所以:
它会复制它在课堂上的部分数据吗?
这个.
因此,具体而言,无法将C::a成员转换回B与z原始B实例具有相同值的实例 - 该信息在(不可逆)切片操作期间已丢失.
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |