기본 클래스 (기준)에서 상속 된 많은 상속 클래스 (기준) 세트가 있습니다. 나는 전혀 여기 소멸자를 가지고 있지 않기 때문에C++의 가상 기본 소멸자
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");
};
};
, 아직 이것은 기본 클래스 있어야하는데 : 다음이 하나에서 파생 된 클래스의
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;
};
몇 가지 예는 criterion
의 코드입니다 , 빈 가상 소멸자를 삽입해야합니까, 즉 like :?
virtual void ~criterion() = 0;
가상 소멸자 선언이 필요한 경우 모든 중간 클래스도 필요합니까? 나는. 위의 fastFilter는 가상 소멸자도 필요합니까?
위의 것은 비어있는 소멸자가 아닙니다. 그것은 순수 가상 함수 인 소멸자입니다. 이것은 비어있는 것과는 아무런 관련이 없습니다. 사실 소멸자는 순수 가상의 경우에도 항상 정의를 가져야한다는 점에서 특별합니다. –