使用派生类对象分配基类对象的错误类型

时间:2014-08-30 20:23:54

标签: c++

我只是想知道如果将派生类对象从其基类赋给变量,我们会得到的错误。

是语法错误还是编译运行时?

2 个答案:

答案 0 :(得分:1)

都不是。但它不是正常或良好的做法。

派生的类是"切片" 成为基类的对象。

当您将派生对象的指针/引用分配给指向基础的指针/引用时,常见的是。 构成了C ++运行时多态的基础。

答案 1 :(得分:1)

您可以强制编译器在遇到此类分配时触发错误:

class Derived;

class Base
{
public:
    Base() = default;

    Base(const Derived &d) = delete;
    Base& operator=(const Derived& other) = delete;
};

class Derived : public Base
{
};

int main()
{
    Derived d;
    Base b = d;
}

Live demo link.