在C++中,我有一个头文件 I.h 定义了一个抽象类(接口),一个空的虚拟析构函数:
class I
{
public:
virtual ~I() {}
};
- 问题 1:空析构函数的目标代码是否将在包含 I.h 的每个.cpp文件的目标文件中生成? 问题
- 2:如果问题 1 的答案是肯定的,这会是一个问题(不同对象文件中的方法相同)吗?
不,
它不会。 类定义中定义的方法会自动inline
,所以不用担心。
请注意,标记为inline
和实际上在二进制文件中内联的方法不同。 inline
只是一个标记(充其量是一个编译器提示)。尤其是具有virtual
功能。无论方法是否标记为inline
,多态性都保证有效。