【发布时间】:2018-03-08 20:52:13
【问题描述】:
例如:
class Base {
virtual void my_function() = 0;
};
class Derived : Base {
void my_function() override;
};
根据我的阅读,override 关键字用于确保我们在要覆盖的函数中具有正确的签名,而且这似乎是它的唯一用途。
但是,在纯虚函数的情况下,如果我们在派生类(或基类,取决于人们如何看待事物)中使用了不正确的签名,编译器会抛出错误。那么,在Derived::my_function() 声明的末尾添加override 有什么意义吗?
【问题讨论】:
-
请注意抽象性传播。如果您在
Derived类中提供了错误的签名,那么Derived类也会变成抽象的。如果没有override关键字,可能无法在正确的位置检测到。 -
它确保如果基类更改与
override断言不兼容,您的代码将无法编译。 -
“有目的地编写教学程序会传播首选的编程实践” - T.J.Elgan
-
添加它的小好处是一些 IDE 会使用它作为高亮点来显示实现或跳转到父级。
标签: c++ c++11 overriding pure-virtual