【发布时间】:2013-12-18 06:13:05
【问题描述】:
在继承层次结构中将方法定义为virtual 是否足以使多态性起作用。
在以下示例中,Der::f 未定义为 virtual 但 d2->f(); 打印 der2
我正在使用 VS IDE(可能只有它在那里......)
class Base
{
public:
virtual void f() { std::cout << "base"; }
};
class Der : public Base
{
public:
void f() { std::cout << "der"; } //should be virtual?
};
class Der2 : public Der
{
public:
void f() { std::cout << "der2"; }
};
int main()
{
Der* d2 = new Der2();
d2->f();
}
【问题讨论】:
-
是的,但在继承的类中也有 virtual 可能更清楚,即使严格来说,不需要它。
标签: c++ polymorphism virtual-functions