Friday, July 21, 2006

Abstract Destructor Needs Implementation


A pure virtual - or abstract - destructor needs an implementation in C++. For example this program does not link because of an "undefined reference to A::~A".

class A {
public:
    virtual ~A() =0;
};

class B : public A { };

int main()
{
    B b;
}

This contradicts the definition of abstract functions. As on the one hand there is no other way to make a class whithout methods abstract and on the other hand a destructor must always be available there is no way out.


Seen on "Scott Meyers, Effective C++, Item 14".

No comments:

Post a Comment