C ++虚拟析构函数定义

时间:2016-09-19 15:19:13

标签: c++ inheritance virtual-destructor

我有三个班级

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?

1 个答案:

答案 0 :(得分:0)

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

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

您无法在类定义中定义它。

没有明确的理由说明为什么必须在类定义的外部定义,除了Bjarne Stroustrup(语言创建者)的旧评论,他认为Analysis Services DDL Task表示“没有身体”。

实施例

= 0