【发布时间】:2012-01-18 04:28:18
【问题描述】:
是否可以在没有虚拟方法的情况下进行继承?编译器说下面的代码不是多态的。
例子:
class A {
public:
int a;
int getA(){return a;};
}
class B : public A {
public:
int b;
int getB(){return b;};
}
在另一个类中,我们试图从 A 对象向下转换为 B 对象:
A *a = ...;
B *b = dynamic_cast<B*>(a)
但这会产生以下编译时错误:
cannot dynamic_cast ... (source type is not polymorphic)
【问题讨论】:
-
除了接受的答案之外,您可能还想看看这个问题:什么时候应该使用 static_cast、dynamic_cast 和 reinterpret_cast? (stackoverflow.com/questions/332030/…)
标签: c++ inheritance polymorphism vtable