c++ - 引用类型和继承问题

标签 c++ inheritance reference

为什么我的编译器没有给我这个代码的警告或错误:

class A {};
class B : public A{};
class C : public A{};
int main(int argc,char** args)
{
    B b;
    A& a = b;
    C c;
    a = c;
}

我倾向于认为这会导致存储在“b”变量中的数据不再是“B”类型,并且会给我带来一堆问题....所以我为什么能够做这个。

最佳答案

a = c;A 之间执行分配的一部分 b , 和 A的一部分 c . BC这些对象的部分(如果有的话)未被修改。

一般来说,这有点危险,因为 BC对象可能没有被设计成只有它们的 A分配的子对象。在 this thread还有其他各种处理建议operator=在类层次结构中。

关于c++ - 引用类型和继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36438760/

相关文章:

generics - Kotlin:使泛型类型的子类继承函数并限制可用的输出类型

c++ - 形式差异 T、T& 和 T&&

C++:在类内、类外应用枚举

c++ - 定义变量时出现奇怪的错误

c++ - 使用文件中的数据从函数返回数组

java - 如何使用Java 8的函数引用?

reference - Rust:引用如何成为类型?

c++ - 将 C++/CLI 对象指针传递给 native 对象方法

ios - 如何使现有类成员成为协议(protocol)实现?

java - java中两个不同类如何调用同一个方法