1.3、final标识符的作用是什么?

C++中final标识符的作用主要体现在两个方面,体现了对继承和多态行为的严格控制:

防止类被继承

final用于类声明时(例如class A final { ... };),表示该类是最终类,不能被任何其他类继承。如果尝试继承该类,编译器会报错。这种设计可以防止类的继承滥用,保护类的设计完整性和封装性,避免因继承带来的复杂性和潜在错误。

防止虚函数被重写

final用于虚函数声明时(例如virtual void func() final;),表示该虚函数在派生类中不能被重写(override)。如果派生类试图重写该函数,编译器同样会报错。这保证了基类中关键函数的实现不被意外修改,提高代码的稳定性和可靠性。

简洁示例

class Base final { // 该类不能被继承
public:
    virtual void foo() final // 该虚函数不能被重写
        // 实现
    }
};

// 以下代码均会导致编译错误
// class Derived : public Base {};
// class Another : public Base {
//     void foo() override; 
// };

这样,final关键字就清晰地表达了“不可再继承”和“不可再重写”的设计意图,是C++11引入的重要语言特性之一。
本文首发于【讳疾忌医-note】公众号,未经授权,不得转载。
(加入我的知识星球,免费获取账号,解锁所有文章。)

阅读剩余
THE END