c ++继承类的虚函数

hel*_*922 1 c++

我知道当你想声明一个多态函数时,你必须声明基类函数是虚拟的.

class Base
{
public:
    virtual void f();
};
Run Code Online (Sandbox Code Playgroud)

我的问题是你是否需要将继承类函数声明为虚拟,即使预期Child的行为就像是"密封"一样?

class Child : public Base
{
public:
    void f();
};
Run Code Online (Sandbox Code Playgroud)

Luc*_*ore 7

不,您不需要重新声明虚函数.

virtual基类功能将自动声明所有重写用作虚拟:

struct A
{
   void foo();          //not virtual
};
struct B : A
{
   virtual void foo();  //virtual
}
struct C : B
{
   void foo();          //virtual
}
Run Code Online (Sandbox Code Playgroud)