gpt4 book ai didi

c++ - 为什么不使用 "virtual"关键字动态绑定(bind)就不能工作?

转载 作者:行者123 更新时间:2023-11-28 04:29:37 24 4
gpt4 key购买 nike

<分区>

假设我有两个类

class Bar{
public:
Bar()
~Bar()
}
class Foo:public Bar{
Foo()
~Foo
}

现在,如果我想执行以下操作:

int main(){
Bar * obj = new Foo();
Foo * obj2 = dynamic_cast<Foo*>(obj);
return 0;
}

我得到一个错误,我不能动态转换它,因为它不是多态的。我知道这是因为我的基类中的任何地方都没有 virtual 关键字(在我的情况下,最好的情况是在析构函数中)。但是为什么我需要这个虚拟关键字来实现这种真正的多态性呢?我理解如果我试图调用一个显示函数,编译器/运行时发生的任何事情都需要确定要调用哪个显示。但我不确定为什么这里需要它。我想要一个解释。

谢谢

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com