当前位置: 首页 > news >正文

[c++11]final和override

final

final是一种修饰符,它可以用于类的成员函数和类本身。
当final修饰一个类时,表示该类不能被其他类继承;
而当final修饰一个成员函数时,表示该成员函数不能被派生类重写。

class Base {
public:virtual void foo() final; // 使用 final 修饰的虚函数
};class Derived : public Base {
public:void foo(); // 错误:无法重写被标记为 final 的函数
};class FinalClass final {// 不能被继承的类
};

Base类中的虚函数foo使用了final修饰,表示该函数不能被其派生类重写。
而FinalClass类使用了final修饰,表示该类不能被继承。

使用final修饰符可以帮助我们在设计类层次结构时更好地表达意图,并防止意外的继承和重写行为。这在某些情况下对于确保代码的安全性和正确性非常有帮助。

override

override 用于显式地告诉编译器某个成员函数是覆盖(override)了基类中的虚函数。
使用 override 关键字可以帮助开发者在编译时捕获一些常见的错误,例如拼写错误或者意外地不正确覆盖虚函数的情况。

class Base {
public:virtual void foo();
};class Derived : public Base {
public:void foo() override; // 明确表示该函数是覆盖了基类中的虚函数
};

Derived 类中的 foo 函数使用 override 关键字,表明它覆盖了 Base 类中的虚函数 foo。如果 Derived 类中的 foo 函数的签名与 Base 类中的 foo 函数不匹配,或者 Base 类中的 foo 函数并非虚函数,编译器会产生错误。

使用 override 可以提高代码的可读性和可维护性,同时避免一些潜在的错误。
它通常与虚函数一起使用,以确保派生类中的函数正确地覆盖了基类中的虚函数。

http://www.dtcms.com/a/293386.html

相关文章:

  • 黄山派lvgl8学习笔记(2)导入头文件和新建一个按钮控件
  • 标记语言---XML
  • linux 驱动-power_supply 与 mtk 充电框架
  • 工业互联网时代,如何通过混合SD-WAN提升煤炭行业智能化网络安全
  • 【Pytorch】数据集的加载和处理(一)
  • 使用ubuntu:20.04和ubuntu:jammy构建secretflow环境
  • ndarray的创建(小白五分钟从入门到精通)
  • 嵌入式开发学习(第三阶段 Linux系统开发)
  • 数据资产——解读数据资产全过程管理手册2025【附全文阅读】
  • [c++11]constexpr
  • 考研数据结构Part1——单链表知识点总结
  • 陷波滤波器设计全解析:原理、传递函数与MATLAB实现
  • Netty中AbstractReferenceCountedByteBuf对AtomicIntegerFieldUpdater的使用
  • 威胁情报:Solana 开源机器人盗币分析
  • Automotive SPICE
  • git的版本冲突
  • 大模型——Data Agent:超越 BI 与 AI 的边界
  • 用ESP32打造全3D打印四驱遥控车:无需APP的Wi-Fi控制方案
  • 从0开始的中后台管理系统-2
  • 课题学习笔记2——中华心法问答系统
  • 汽车行业数字化——解读52页汽车设计制造一体化整车产品生命周期PLM解决方案【附全文阅读】
  • 记录更新时间用java的new date还是数据库的now
  • 深入理解 C 语言数据类型:从内存到应用的全面解析
  • CAN基础知识 - 进阶版
  • 消息推送功能设计指南:精准触达与用户体验的平衡之道
  • Spring Boot 中集成ShardingSphere-JDBC的基本使用
  • Kibana报错[security_exception] current license is non-compliant for [security]
  • HCIA/IP(一二章)笔记
  • TTL+日志的MDC实现简易链路追踪
  • 强化学习理论