【发布时间】:2017-09-09 06:21:33
【问题描述】:
我有一个接口类,但我希望所有派生类都实现虚拟析构函数:
// Interface.h
class Interface {
virtual ~Interface() = 0;
};
Interface::~Interface() = default;
问题是在这种情况下,由于重复的符号,我遇到了链接器错误。
我可以将定义放在.cpp 文件中,但我想知道是否有更优雅的解决方案?
【问题讨论】:
-
可能是
inline Interface::~Interface() = default;? -
函数(析构函数)不能是抽象的,同时有实现(默认)。
-
@AndrewKashpur,是的,它可以:stackoverflow.com/questions/37777606/…
-
为什么要把析构函数设为纯虚函数?它没有添加任何东西。所有类都必须实现(或默认)析构函数。
-
@SanderDeDycker 当类没有任何成员函数来制作纯虚拟时,这是一个常用的技巧。
标签: c++ c++11 virtual-destructor