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 {
    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