【发布时间】:2011-04-14 04:09:42
【问题描述】:
执行以下操作是否安全还是未定义的行为:
class Base
{
private:
int a;
};
class Derived : public Base
{
private:
int b;
};
Base x;
Derived y;
x = y; // safe?
派生类中的多余位会被切掉吗?
【问题讨论】:
-
这里没有任何东西被“切掉”:
y仍然是Derived类型的完全有效对象。但只有y的那些部分被分配给x,适合x。这又不是问题。如果您稍后假设x不是Base类型,而是Derived类型,那么它只会成为一个问题。
标签: c++ class inheritance variable-assignment