派生类对象可以分配给 C++ 中的基类对象。
Derived d;
Base b = d; // It's Ok
但为什么不能将基类对象赋值给派生类对象呢?
Base b;
Derived d = b; //Not Ok. Compiler give an error
编辑:
抱歉,这个问题实际上是在面试时被问到的。
最佳答案
继承是一种“is-a”关系,但它是单向。
如果你有例如
struct Base { /* ... */ };
struct Derived : Base { /* ... */ };
那么 Derived
是一个 Base
,但是 Base
不是 Derived
.
这就是为什么您可以使用派生对象分配或初始化基类实例(但要注意 object slicing ),但反之则不行。
关于c++ - 为什么不能将 Base 类对象分配给 Derived 类对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45857883/