首页 > 解决方案 > Base Class中虚析构函数的实用性

问题描述

让我们举这个例子:

    /* Source.cpp */

    struct Base {
        virtual void func() = 0;
    };

    struct Derived : public Base {
        virtual void func() override { }
    };

    int main() {
        return 0;
    }

通过编译(在 g++ 8.3.0 上)g++ Source.cpp -Wnon-virtual-dtor我们得到:

    Source.cpp:2:8: warning: 'struct Base' has virtual functions and accessible non-virtual destructor [-Wnon-virtual-dtor]
     struct Base {
            ^~~~
    Source.cpp:6:8: warning: base class 'struct Base' has accessible non-virtual destructor [-Wnon-virtual-dtor]
     struct Derived : public Base {
            ^~~~~~~
    Source.cpp:6:8: warning: 'struct Derived' has virtual functions and accessible non-virtual destructor [-Wnon-virtual-dtor]


什么是实际的事情?

标签: c++c++17virtualdestructorvirtual-destructor

解决方案


推荐阅读