似乎override
和final
说明符可以在声明和定义中使用。是否可以仅在声明级别使用它们?
答案 0 :(得分:1)
如果定义在类定义中,override
和final
说明符只能出现在成员定义中。
E.g :
struct Base { virtual void foo() = 0 }
struct Derived : public Base { void foo() override { std::cout << "foo"; } // OK
struct Derived : public Base { void foo() override; }
void Derived::foo() override { std::cout << "foo"; } // Error!
// ^^ Definition outside class. ^^
换句话说,如果将成员函数的定义放在类定义之外,那么是,override
和final
说明符应仅存在于类定义中的声明。