c++11:final关键字

C++ final 关键字详解
本文介绍了 C++ 中 final 关键字的用法。它可用于声明类不可被继承或防止成员函数被覆写,有助于增强代码的安全性和可维护性。

笔记

c++引进这样一个关键字:final

通常我们不希望一个类被继承,或者不想考虑他是否合适被继承就可以在类名之后加上final关键字。
也可以定义函数的时候使用在函数的形参列表之后加上final关键字,这样之后任何尝试覆盖该函数的操作都是错误的。不允许后序的其他类覆盖该成员函数。

### 作用 在C++中,`final`关键字主要有两个作用: - 限制类的继承:当`final`用于类定义时,该类不能被其他类继承,防止类被进一步派生,有助于设计出不可扩展的类,增强代码的安全性和稳定性。 - 限制虚函数的重写:当`final`用于虚函数时,该虚函数不能在派生类中被重写,确保虚函数的实现不会在派生类中被修改。 ### 使用方法 - **用于类**:在类名后面`final`关键字,语法为`class ClassName final {...};`。 - **用于虚函数**:在虚函数声明或定义的末尾添`final`关键字,语法为`virtual ReturnType FunctionName(Parameters) final;`。 ### 示例 ```cpp #include <iostream> // 使用final关键字修饰类,该类不能被继承 class Base final { public: virtual void print() { std::cout << "Base::print()" << std::endl; } }; // 以下代码会编译错误,因为Base类被声明为final,不能被继承 // class Derived : public Base { // public: // void print() override { // std::cout << "Derived::print()" << std::endl; // } // }; class AnotherBase { public: // 使用final关键字修饰虚函数,该虚函数不能在派生类中被重写 virtual void show() final { std::cout << "AnotherBase::show()" << std::endl; } }; class DerivedFromAnotherBase : public AnotherBase { public: // 以下代码会编译错误,因为AnotherBase::show()被声明为final,不能被重写 // void show() override { // std::cout << "DerivedFromAnotherBase::show()" << std::endl; // } }; int main() { Base base; base.print(); AnotherBase anotherBase; anotherBase.show(); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值