`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
不会以任何方式改变程序的含义。这就是关键字冗余的含义(在那种情况下)。删除不允许任何未经删除不允许的内容。
在下面的例子中:
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
不会以任何方式改变程序的含义。这就是关键字冗余的含义(在那种情况下)。删除不允许任何未经删除不允许的内容。