c++ - 为什么不能将 Base 类对象分配给 Derived 类对象?

标签 c++ c++11 object inheritance derived-class

派生类对象可以分配给 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/

相关文章:

c++ - RegQueryValueEx 给出奇怪的数据

c++ - 在列表中正确使用 boost::shared_ptr

c++ - 无法从 'initializer-list' 转换为 'std::initializer_list<Keyword> &'

c++ - 如何定义从自定义迭代器到自定义 const_iterator 的隐式转换

java - 如何打印我的 Java 对象而不得到 "SomeType@2f92e0f4"?

c++ - vector 中的移动元素未按预期工作

c++ - 在 C++ 中返回具有空状态 (NULL) 的对象而不返回指针

javascript - TypeScript:初始化嵌套对象的更简单方法?

javascript - 按日期对数组进行分组,并计算平均值

c++ - 将 C++ 中的运算符 == 转换为 Objective-C