将派生类分配给基类

时间:2010-09-18 19:15:31

标签: c++ class inheritance variable-assignment

执行以下操作是否安全,还是未定义的行为:

class Base
{
private:
    int a;
};

class Derived : public Base
{
private:
    int b;
};

Base x;
Derived y;
x = y;   // safe?

派生类中的额外位是否会被切掉?

2 个答案:

答案 0 :(得分:9)

你是对的,对象被切成薄片。这是一个common问题。你不应该这样做!

答案 1 :(得分:9)

是的,发生切片。但这并不是未定义的行为。

您可能会在C ++中找到此条目 - 常见问题解答有用:
http://www.parashift.com/c++-faq-lite/virtual-functions.html#faq-20.8