<分区>
假设我有两个类
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 关键字(在我的情况下,最好的情况是在析构函数中)。但是为什么我需要这个虚拟关键字来实现这种真正的多态性呢?我理解如果我试图调用一个显示函数,编译器/运行时发生的任何事情都需要确定要调用哪个显示。但我不确定为什么这里需要它。我想要一个解释。
谢谢