根据C++标准规定,如果虚函数同时被声明为final,则编译器应当不进行内联处理。在基类中将函数声明为virtual final,可以防止派生类中的函数重写该函数,并且编译器也不会将其内联。 示例代码如下:
class Base{
public:
virtual void foo() final {};
};
class Derived : public Base{
public:
virtual void foo(){}; // 报错,无法重写final函数foo()
};
在上述示例中,Base类中的foo()函数被声明为virtual final,防止任何派生类重写它。Derived类中的尝试重写foo()函数会造成编译错误。