`virtual` `override` 析构函数

`virtual` `override` destructor

在下面的例子中:

class A {
public:
    virtual ~A() { std::cout << "~A" << std::endl; }
};

class B : public A {
public:
    virtual ~B() override { std::cout << "~B" << std::endl; }
};

class C : public B {
public:
    ~C() override { std::cout << "~C" << std::endl; }
};

clang-tidy 对 class B 发出以下警告:

'virtual' is redundant since this function is already declared 'override'

从 class B 中删除 virtual 关键字似乎允许调用链中的所有析构函数,但我想确保我没有遗漏任何东西。

从具有 override 的函数中删除 virtual 不会以任何方式改变程序的含义。这就是关键字冗余的含义(在那种情况下)。删除不允许任何未经删除不允许的内容。