我只是想知道如果将派生类对象从其基类赋给变量,我们会得到的错误。
是语法错误还是编译运行时?
答案 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;
}