我有一个问题
struct IMyInterface
{
virtual method1() = 0;
virtual method2() = 0;
};
GCC坚持认为我有
struct IMyInterface
{
virtual method1() = 0;
virtual method2() = 0;
virtual ~IMyInterface(){};
};
我不明白为什么。纯接口完全与接口有关(显然)。析构函数是接口的具体实现者的内部实现细节的一部分;它不构成接口的一部分。我理解整个切割问题(或者至少我认为我理解了)。
所以我的问题是 - GCC是否正确坚持这样做,如果是为什么?
virtual ~IMyInterface() = 0;
),但如果链接器抱怨缺少定义,你实际上仍然可以为纯虚函数提供实现,即virtual ~IMyInterface() = 0 {}
。 - AshleysBrain