C++11 override和final是否多余?
C++Primer对这两个关键字的描述
override:C++11新标准允许派生类显示地注明 它使用某个成员函数 覆盖了它继承的虚函数。
final:有时我们会定义这样一个类,我们不希望其他类继承它,或者不想考虑它是否适合作为一个基类。...C++11新标准提供了一种防止继承发生的方法,即在类名后跟一个关键字final。
想法很美好啊,但特别新增两条语法规则有必要吗???
对于override。若我想覆盖基类的虚函数,只需从基类代码中复制相应的虚函数声明(对,就是复制,ctrl+C永远比重新敲一遍声明快速而准确),再在本类中定义就是了。至于不想覆盖,那么本类什么都不做即是。
对于final。这是什么样的项目才会有这样“奇葩”的需求:不想自己的类被继承。就算有这样的需求,C++就是为满足小众需求,却增加了其他大部分人的学习成本。
顺便吐槽一下,现在C++的学习成本太高了,对于新人,坚决不建议入坑。有那精力,把python书翻几遍,工资照样不低。