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是的,没错