我注意到final
关键字出现了一些奇怪的行为。当我这样做时:
class A {
public:
virtual ~A() = default;
virtual void foo() final {}
};
class B : public A {
public:
void foo() override {}
};
我在foo
覆盖B
时遇到编译错误,正如我所料。但是当我单独定义和声明A :: foo
class A {
public:
virtual ~A() = default;
virtual void foo() final;
};
void A::foo() {}
class B : public A {
public:
void foo() override {}
};
错误消失了。是应该是它还是编译器错误?
//编辑:gcc版本4.9.2(Debian 4.9.2-10 + deb8u1)