虚函数在派生类中声明为非虚拟,这种情况是不符合C++语言规范的。在C++中,如果一个虚函数在基类中被声明为虚函数,那么在派生类中,该虚函数应该继续保持为虚函数,而不是非虚拟。
如果在派生类中将虚函数声明为非虚拟,那么在使用该派生类的对象时,编译器将无法正确地调用该虚函数,从而导致程序错误。因此,建议在派生类中保持虚函数的虚拟性,以确保程序的正确性和可维护性。
如果需要在派生类中重写基类中的虚函数,但不希望该虚函数在派生类中继续保持虚拟性,可以使用“final”关键字来标记该虚函数,表示该虚函数不能被进一步派生类重写。例如:
class Base {
public:
virtual void foo() {
// ...
}
};
class Derived : public Base {
public:
void foo() final {
// ...
}
};
在上面的代码中,在派生类中重写了基类中的虚函数“foo()”,并使用“final”关键字标记该虚函数,表示该虚函数不能被进一步派生类重写。这样可以确保程序的正确性和可维护性。
领取专属 10元无门槛券
手把手带您无忧上云