【发布时间】:2015-08-03 08:09:00
【问题描述】:
我在一次采访中被问到这个问题,我不确定在以下情况下的行为:
class A
{
virtual fun1(){...}
virtual fun2(){...}
};
class B : public A
{
virtual fun1(){...}
virtual fun2(){...}
};
现在如果,
A* AObj = new A;
B* BObj = (B*) AObj;
BObj 是否可以访问 B 的方法是因为 virtual 关键字,还是因为它指向 AObj 的对象?
有人可以帮助我了解向下转换究竟是如何影响访问的吗?
【问题讨论】:
-
您可以在 ideone.com 或任何地方尝试:ideone.com/B7P6DN(这给了我运行时错误)
标签: c++ inheritance polymorphism downcast