C++ `虚拟``override`析构函数

C++ `虚拟``override`析构函数,c++,c++17,clang-tidy,C++,C++17,Clang Tidy,在以下示例中: 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 {

在以下示例中:

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; }
};
A类{
公众:

virtual~A(){std::cout从具有
覆盖
的函数中删除
virtual
不会以任何方式更改程序的含义。这就是关键字冗余的含义(在该上下文中)。移除不允许任何不被移除的东西。

这回答了你的问题吗?我之所以这么想是因为这是关于析构函数的;那篇文章提到了标准函数。在这方面它们是一样的吗?一次一个方法(包括析构函数)已标记为
virtual
,它在所有子体中都是隐式
virtual
,因此在这些子体中再次显式声明
virtual
关键字是多余的,因此警告是多余的。并且对方法应用
覆盖
要求基方法是虚拟的(隐式或显式)因为只有虚方法可以被重写。@RemyLebeau那么,一旦函数是虚的,它就一直是虚的吗?@rhughes是的,没错