c++ 11 的override 和 final的准确介绍及原理分析

0x00 c++11 标准 提供的显式函数覆盖检测手段(override)

背景:在派生类中写覆盖基类中的虚函数时,可能会因为疏忽,使得没有正确覆盖,而这个问题还是比较难发现的
解决:c++ 11标准实现了显式函数覆盖的关键字override,当我们写上这个关键字时,就是告诉编译器,我要覆盖基类的虚函数,那么编译期就会主动检查 派生类 和 基类 中的两个函数签名(Signature)是否相同,如果不相同,就会报编译期的错误

0x01 c++11 标准 提供显式的指针不可被重指向(final)

背景:希望类不可被继承或函数不可被重载时使用

注意:final和override不是关键字,只是标识符,但是使用可是当做是关键字,都是在控制编译做固定的行为
同时:在Visual Stuidio和C++11标准中,可以将override与final用作变量名和函数名,它们不是语言本身的关键字,但不建议这样使用。

发布了17 篇原创文章 · 获赞 1 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/TowerOs/article/details/103948334