我有一组大量的继承类(criteria),它们都继承自一个基类(criterion)。这是criterion
的代码:
class criterion
{
public:
virtual unsigned __int32 getPriorityClass() const = 0;
virtual BOOL include(fileData &file) const = 0;
virtual void reorderTree() = 0;
virtual unsigned int directoryCheck(const std::wstring& directory) const = 0;
virtual std::wstring debugTree() const = 0;
};
从这个类派生出来的一些例子:
class fastFilter : public criterion
{
public:
void reorderTree() {};
unsigned int directoryCheck(const std::wstring& /*directory*/) const { return DIRECTORY_DONTCARE; };
unsigned __int32 getPriorityClass() const { return PRIORITY_FAST_FILTER; };
};
class isArchive : public fastFilter
{
public:
BOOL include(fileData &file) const
{
return file.getArchive();
}
std::wstring debugTree() const
{
return std::wstring(L"+ ISARCHIVE\n");
};
};
由于我这里根本没有析构函数,但是这应该是一个基类,那么我需要插入一个空的虚拟析构函数吗?就像这样:
virtual void ~criterion() = 0;
如果需要虚拟析构函数声明,那么所有中间类都需要一个吗?也就是说,fastFilter 是否也需要一个虚拟析构函数?