C++11 override和final关键字

news/2024/11/24 2:02:38/

C++11中的override和final关键字是为了增强代码的编译时类型检查和面向对象设计中的继承机制。

override关键字用于显示地表明派生类中的成员函数覆盖了基类中的虚函数。当派生类中的函数与基类中的虚函数签名不同或者没有使用override关键字时,编译器会给出警告或错误提示。这样可以避免因为函数签名不同而无法正确覆盖基类中的虚函数,从而导致程序运行时的错误。

final关键字用于显示地防止在派生类中重载某个函数。如果在一个虚函数上使用了final关键字,那么任何派生类都无法再对该函数进行重载。

当 final 用于类上时,它表示该类是最终类,不能被派生出子类。

class Base final { ... };

当 final 用于成员函数上时,它表示该函数不能被重写

class Base {
public:virtual void foo() final;
};class Derived : public Base {
public:// 以下代码会报错virtual void foo() override;
};

当 final 用于虚函数上时,它表示该虚函数不能被覆盖

class Base {
public:virtual void foo();
};class Derived : public Base {
public:// 以下代码会报错virtual void foo() final;
};

其他:

基类中将虚函数声明为私有函数 和 将虚函数声明为 final 的效果是不同的。

将虚函数声明为私有函数,可以让子类无法直接调用该函数,但子类仍然可以定义一个同名的函数来实现其自己的功能。这种情况下,虚函数的目的是为了供子类重写,但是基类本身并不想让子类直接使用虚函数的实现。

而将虚函数声明为 final,则是为了明确告诉子类,该函数不允许被重写。这是因为基类已经认为该函数已经具备了足够的功能,不需要子类重新实现。同时,final 也可以起到一定的优化作用,因为编译器可以在编译时确定该函数的调用路径,从而提高程序的效率。

此外,将虚函数声明为私有函数并不能完全防止子类重写该函数。子类可以通过其他方式(如友元函数、内联函数等)来访问该函数,并在其内部实现同名函数来达到重写的目的。而将虚函数声明为 final,可以确保子类无法重写该函数,从而保证程序的正确性和安全性。

因此,尽管将虚函数声明为私有函数可以达到一定的效果,但是如果真正想防止子类重写该函数,还是应该使用 final 关键字。


http://www.ppmy.cn/news/124306.html

相关文章

MyBatis(MyBatis环境搭建,单表操作)

目录 MyBatis 环境搭建 1.添加 Mybatis 框架支持 2.设置 MyBatis 配置信息 2.1.设置数据库连接的相关信息 2.2 Mybatis xml 保存路径和 xml命名格式 ​编辑 MyBatis 模式开发 Mybatis xml 模板 查询表内容 单元测试 以根据id,查询用户对象这个方法为例 获取动态参数的…

记一次k8s节点上出现node.kubernetes.io/disk-pressure污点的问题

目录 问题描述 原因分析: 解决方案: 其他问题 问题描述 k8s部署时pod一直属于Pending状态,也就是说pod未调度到k8s节点上 原因分析: 通过以下命令查看下pod kubectl get pod 以上命令可以看到各个pod的状态&#xff0c…

日立真空冰箱R-ZXC750KC,智启行业保鲜新生态

“小扇引微凉,悠悠夏日长”,仲夏六月,日立冰箱正式开启“年中盛典”618新鲜季活动。天猫日立电器旗舰店除超值钜惠、精致好礼之外,更有更令人心动的消费补贴、买1送1等福利,这个夏天,想要家电焕新的小伙伴们…

科技创新与设计美学共铸高端,三星品道家宴系列冰箱即将上线

近年来,随着高净值群体的发展壮大,追求“品质”与“高端”的消费观念成为新趋势,从而驱动了各行各业快速升级创新,其中就包括冰箱行业。在冰箱行业,三星冰箱凭借顶尖的保鲜技术、精妙的内部设计和高质感的外观工艺&…

云米冰箱能控制扫地机器人_在云米的大屏冰箱就能操控其他智能家电?一起到京东618了解更多...

还值得一提的是,当你在煮菜的过程中发现有某样食物忘记购买的时候,你并不需要自己下楼去购买,在这个21寸屏幕上就可以完成购物的需求。云米联合诸多巨头,为消费者提供丰富的产品新鲜的蔬菜、新鲜的生鲜、粮油副食、肉类、水果等等…

高端智能冰箱成白电市场新宠,营造品质生活方式为上策

作为家中的必须生活家电,整体冰箱行业正处在一个转型变革的时间节点上。而到了当下,高端、智能成为国内冰箱领域的两大关键词,正是凭借于此,冰箱再度突破发展束缚,成为白电市场新宠。 现实中,三星的冰箱就…

不忘初心,TCL冰箱洗衣机20周年从心出发

心无界行无疆,一切伟大源于敢想,“当心不再受到束缚,不再设有限制,那么成长的空间将无限大”2018年8月8日,心无界-2018TCL冰箱洗衣机全球战略合作伙伴大会在安徽合肥盛大开幕。来自全球的TCL冰箱洗衣机战略合作伙伴汇集…

冰箱堪比「垃圾桶」?这根棒除味又保鲜,更能 99% 超强杀菌!

{} ▲ 点击查看 每天的饭菜、生鲜、零食、饮料、干货,总能把我家冰箱塞得满满当当。 各种饭菜干货窜味儿,蔬果开始发烂发臭,每天打开冰箱都是一次「开门杀」…… 用柚子皮和竹炭包除味根本不行,从根源上改善冰箱环境才是硬道理。 …