C++ virtual destructor definitions : <p>I have three classes</p>

<pre><code>class A {
    // pure virtual funcs and member vars
    virtual ~A();
}

class B : public A {
    // some more pure virtual funcs
    virtual ~B();
}

class C : public B {
     // concrete implementations
     ~C() {}
}
</code></pre>

<p>Presently this doesn't compile with an 'undefined reference to `typeinfo' error (~B() is not defined, easily fixable) however I'm wondering if just defining 'virtual ~B {}' is the correct thing to do or whether ~C should be virtual and defined so calls to ~B are dispatched to ~C?</p>
