C++头文件中的空接口析构函数
C++ empty interface destructor in header file
在C++中,我有一个头文件 I.h 定义了一个抽象类(接口),一个空的虚拟析构函数:
class I
{
public:
virtual ~I() {}
};
- 问题 1:空析构函数的目标代码是否将在包含 I.h 的每个.cpp文件的目标文件中生成? 问题
- 2:如果问题 1 的答案是肯定的,这会是一个问题(不同对象文件中的方法相同)吗?
不,
它不会。 类定义中定义的方法会自动inline
,所以不用担心。
请注意,标记为inline
和实际上在二进制文件中内联的方法不同。 inline
只是一个标记(充其量是一个编译器提示)。尤其是具有virtual
功能。无论方法是否标记为inline
,多态性都保证有效。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 内联映射初始化的动态atexit析构函数崩溃
- 什么时候调用析构函数
- 优先顺序:智能指针和类析构函数
- C++-明确何时以及如何调用析构函数
- 使用基类指针创建对象时,缺少派生类析构函数
- 在c++中使用向量时,如何调用构造函数和析构函数
- 重载 -> shared_ptr 个实例中的箭头运算符<interface>,接口中没有纯虚拟析构函数
- 对已定义的接口析构函数的未定义引用
- 为什么在将多态行为与指向接口的指针一起使用时没有调用析构函数?
- C++11接口纯虚拟析构函数
- 基接口类中缺少虚拟析构函数
- C++头文件中的空接口析构函数
- 可更新接口中的虚拟析构函数可以吗?
- IUknown 派生接口上的虚拟析构函数
- 根据定义,将"虚拟析构函数放入接口内"不会使它不再是接口吗?
- 是接口所需的虚析构函数,如果总是将其存储在shared_ptr中
- 诸如NonCopyable和NonMovable之类的接口应该提供虚拟析构函数吗
- C++具有非虚拟析构函数的 DLL 接口类