c++ 11 学习 override

在 C++ 中,override 是 C++11 引入的一个关键字,用于显式地表明派生类中的成员函数是重写基类中的虚函数。它不仅增强了代码的可读性,还提供了编译期的校验功能,确保函数签名与基类虚函数严格匹配。

作用与优势

  1. 编译期校验 ‌:当使用 override 时,编译器会检查该函数是否确实重写了基类中的某个虚函数。如果函数签名不匹配(如参数类型、const 限定符、返回类型等),编译器将报错,防止"假重写"或"意外隐藏"问题。
  2. 提高安全性‌:避免因拼写错误或参数类型不一致导致的函数未被正确重写,从而引发运行时行为不符合预期的问题。
  3. 增强可读性‌:明确表达程序员的意图,即该函数是用于重写基类虚函数的。

使用方式

  • override 必须出现在成员函数声明的末尾,紧接在 constnoexcept 之后。
  • 它只能用于虚函数的重写,不能用于新增函数。
  • 若基类中没有对应的虚函数,或者函数签名不匹配,使用 override 会导致编译错误。
cpp 复制代码
class Base {
public:
    virtual void foo(int x) const;
};

class Derived : public Base {
public:
    void foo(int x) const override; // 正确:成功重写
    // void foo(double x) const override; // 错误:基类没有匹配的虚函数
};

语法位置

override 关键字必须放在函数声明的最后,即参数列表之后、constnoexcept 之后。例如:

cpp 复制代码
virtual ReturnType Function(params) const override;

final 的结合使用

override 可以与 final 结合使用,表示该虚函数在当前派生类中被重写,并且不能再被进一步重写。例如:
*

cpp 复制代码
class Base {
public:
    virtual void func();
};

class Derived : public Base {
public:
    void func() override final; // 表示此函数不能再被重写
};

override 是 C++11 中一个重要的关键字,用于确保虚函数的正确重写,提升代码的安全性和可维护性。它通过编译期检查,帮助开发者避免常见的错误,同时使代码意图更加清晰。

相关推荐
weixin_440730501 分钟前
使用pytest中方法控制执行步骤(test_begin.py、test_end.py,@pytest.mark.run(order=1))
开发语言·python·pytest
库玛西5 分钟前
深入浅出Linux select网络模型:从底层位图原理到C++面向对象高级封装
linux·服务器·网络·c++·ubuntu
xian_wwq11 分钟前
【学习笔记】-深度认知系列-第8讲主流AI模型横向评测——GPT、Claude、Gemini、盘古、文心、通义
人工智能·笔记·学习
2402_8828938614 分钟前
深入浅出 unordered_map 与 unordered_set——从使用到底层差异
c++·哈希·unordered_map·unordered_set
大牧师19 分钟前
TypeORM 学习教程
数据库·sql·学习·node.js·orm·nest.js·typeorm
geovindu29 分钟前
CSharp: Command Pattern
开发语言·后端·c#·.net·.netcore·命令模式·行为模式
今天要早睡_39 分钟前
C++ 核心语法速过:命名空间、引用、函数重载与 nullptr 深度解析
android·java·c++
心易行者1 小时前
Python自动化测试7步落地法:用python在线运行省掉90%环境配置时间
java·开发语言·人工智能·python·log4j·ai编程
汉克老师1 小时前
CSP-J 初赛(以满分为目标):第二十七课 《图的遍历——BFS广度优先搜索——像“水波纹”一样,一层一层地搜索》
c++·csp-j·小学生·学c++编程
晨欣1 小时前
NVIDIA GPU 架构演进学习笔记(GPT-5.6 Terra 生成)
笔记·学习·gpu·显卡·nvidia·英伟达