c++虚析构函数定义



我有三个类

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() {}
}

目前这不会编译与'未定义的引用' typeinfo'错误(~B()没有定义,很容易修复),但我想知道如果只是定义'虚拟的~B{}'是正确的事情要做或是否~C应该是虚拟的和定义的,所以调用~B被分派到~C?

假设这个问题是关于纯虚析构函数的(代码不是真实的,所以很难说,但是你在谈论一个缺失的析构函数定义,以及纯虚函数):

必须定义可调用的纯虚析构函数。

不能在类定义中定义。

没有明确的理由说明为什么必须在类定义之外定义它,除了Bjarne Stroustrup(语言创建者)的一个老注释,他认为= 0指示了“no body”


的例子。

struct S
{
    virtual ~S() = 0;
};
S::~S() {}

最新更新