まくまくC/C++ノート
仮想デストラクタには実装が必要
2009-07-02
class Base {
public:
    virtual ~Base() = 0;
    ...
};

inline Base::~Base() {}

C++ ではデストラクタを継承することができないので、デストラクタを純粋仮想関数にした場合でも、そのクラスで実装を持たなければいけません。 実装が存在しないと、コンパイル時か実行時に undefined symbol エラーになってしまいます。

純粋でない仮想関数にした場合も同様です。

class Base {
public:
    virtual ~Base() {}
};
2009-07-02