例如:重写纯虚函数时,有没有使用`override`的意思?
class Base {
virtual void my_function() = 0;
};
class Derived : Base {
void my_function() override;
};
从我读的override
关键字用来确保我们有在我们覆盖的功能正确的签名,这似乎是其唯一的用途。
然而,在一个纯虚函数的情况下,编译器会如果我们在派生类中使用了不正确的签名(或基类,这取决于一个人如何看待事物)抛出一个错误。那么,Derived::my_function()
声明的末尾是否还有点加override
?
请注意,抽象*传播*。如果你在'Derived'类中提供了错误的签名,那么'Derived'类也变得很抽象。如果没有'override'关键字,可能无法在正确的位置检测到。 –
它确保如果基类与“override”断言不兼容,您的代码将无法编译。 – EJP
“penning有针对性的教学程序传播优先编程实践” - T.J.Elgan – coderatchet