基本クラス (基準) から継承する継承クラス (基準) の大規模なセットがあります。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 には仮想デストラクタも必要ですか?