我知道当你想声明一个多态函数时,你必须声明基类函数是虚拟的.
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)
不,您不需要重新声明虚函数.
甲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)