I noticed some strange behaviour with final keyword. When I do:
class A {
public:
virtual ~A() = default;
virtual void foo() final {}
};
class B : public A {
public:
void foo() override {}
};
I get compiler error on overriding foo in B as I would expect. But when I make separate definition and declaration of A::foo
class A {
public:
virtual ~A() = default;
virtual void foo() final;
};
void A::foo() {}
the error is gone. Is it as it should be or a compiler bug?
//edit: gcc version 4.9.2 (Debian 4.9.2-10+deb8u1)
Aucun commentaire:
Enregistrer un commentaire