c++ - `virtual` `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; }
};
clang-tidy
对类给出以下警告B
:
'virtual' 是多余的,因为这个函数已经被声明为 'override'
从类中删除virtual
关键字B
似乎允许调用链中的所有析构函数,但我想确保我没有遗漏任何东西。
解决方案
virtual
从函数中删除override
不会以任何方式改变程序的含义。这就是关键字冗余的含义(在这种情况下)。删除不允许任何未经删除不允许的内容。
推荐阅读
- tensorflow - InvalidArgumentError:无法为操作 replica_0/lambda_1/Shape 分配设备
- docker - 在 Docker 堆栈文件中覆盖来自 Dockerfile 的 COPY 命令
- python - 在 Python 中更改二维数组中元素的值
- c# - 是否可以在表单 UI 之外呈现表单组件?C#
- http - 向 dart:io HttpClient 添加自定义验证逻辑
- javascript - 我是不和谐机器人场景的新手,每次我在终端输入“node index.js”时它都不起作用
- c# - 使用 C# .net 通过 TCP/IP 从麦克风传输实时实时音频
- c++ - 什么类型的转换适合从 unsigned char* 转换为 char*?
- c# - 按钮应在 WPF C# 中基于 MVVM 模式打开新的 ContentControl
- c++ - 将 WinUI 与 C++ 一起使用的指南