C++ final 学习笔记
1. final 的基本概念
- 作用:final 关键字用于指示某个类、成员函数或虚函数不能被继承或重写。
- 优势:提高代码的安全性和可读性,防止意外的继承或重写。
- 发展历程:C++11 引入了 final 关键字,用于增强类的封闭性和继承的可控性。
示例代码:
class Base final {
// ...
};
class Derived : public Base { // 编译错误,无法继承 final 类
// ...
};
2. final 的应用场景
- 类的继承:在基类声明为 final 后,防止其他类继承该基类。
- 成员函数的重写:在虚函数声明为 final 后,防止其他类重写该虚函数。
示例代码:
class Base {
public:
virtual void foo() final; // 声明 foo() 为 final 虚函数
};
class Derived : public Base {
public:
void foo() override; // 编译错误,无法重写 final 虚函数
};
3. final 的使用技巧
- 加强类的封闭性:在设计基类时,如果不希望其他类继承该基类,可以将其声明为 final。
- 约束继承关系:通过在虚函数声明为 final,限制派生类重写该虚函数,从而保持设计的一致性。
示例代码:
class Base final {
public:
virtual void foo() final; // 声明 foo() 为 final 虚函数
};
class Derived : public Base {
public:
void foo() override; // 编译错误,无法重写 final 虚函数
};
4. 实战案例分析
- 防止意外继承:在设计不希望被继承的类时,使用 final 关键字加强类的封闭性。
- 保持设计一致性:在设计希望保持不变的虚函数时,使用 final 关键字约束继承关系,防止意外的重写。
通过学习和使用 final 关键字,可以更好地控制类的继承关系和虚函数的重写情况,提高了代码的安全性和可维护性。
266

被折叠的 条评论
为什么被折叠?



