【发布时间】:2013-08-08 20:59:12
【问题描述】:
我知道 C++ 通过虚函数实现运行时多态性,并且 virtual 关键字是继承的,但我没有看到在派生类中使用 virtual 关键字。
例如在以下情况下,即使您在派生类中删除了 virtual 关键字,ptr->method() 调用仍然会转到派生::method。那么这个 virtual 关键字在派生类中有什么额外作用呢?
#include<iostream>
using namespace std;
class base
{
public:
virtual void method()
{
std::cout << std::endl << "BASE" << std::endl;
}
};
class derived: public base
{
public:
virtual void method()
{
std::cout << std::endl << "DERIVED" << std::endl;
}
};
int main()
{
base* ptr = new derived();
ptr->method();
return 9;
}
【问题讨论】:
-
如你所见,它是多余的。
-
@Nbr44 你不会从这个评论中回答
-
virtual在基类中重写虚函数时隐含在派生类中。 C++11 还引入了final关键字,它可以防止进一步的派生类重新实现虚函数。 -
@triclosan 确实如此。我贴出来了。
标签: c++ polymorphism virtual-functions