C++头文件中的空接口析构函数

C++ empty interface destructor in header file

本文关键字:接口 析构函数 文件 C++      更新时间:2023-10-16

在C++中,我有一个头文件 I.h 定义了一个抽象类(接口),一个空的虚拟析构函数:

class I
{
  public:
    virtual ~I() {}
};
  • 问题 1:空析构函数的目标代码是否将在包含 I.h 的每个.cpp文件的目标文件中生成?
  • 问题
  • 2:如果问题 1 的答案是肯定的,这会是一个问题(不同对象文件中的方法相同)吗?
不,

它不会。 类定义中定义的方法会自动inline,所以不用担心。

请注意,标记为inline和实际上在二进制文件中内联的方法不同。 inline只是一个标记(充其量是一个编译器提示)。尤其是具有virtual功能。无论方法是否标记为inline,多态性都保证有效。