में वर्चुअल डिफॉल्ट डिस्ट्रक्टर्स मुझे विरासत वर्ग (मानदंड) का एक बड़ा सेट मिला है जो बेस क्लास (मानदंड) से प्राप्त होता है।सी ++
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");
};
};
जब से मैं एक नाशक यहाँ बिल्कुल जरूरत नहीं है, लेकिन अभी तक यह एक आधार वर्ग माना जाता है: यहाँ '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;
};
कुछ उदाहरण है , क्या मुझे एक खाली वर्चुअल विनाशक डालने की ज़रूरत है, आईई इस ?: तरह
virtual void ~criterion() = 0;
हैं कि आभासी नाशक घोषणा की आवश्यकता नहीं, सभी मध्यवर्ती वर्ग के रूप में अच्छी तरह से एक की जरूरत है? अर्थात। उपरोक्त तेजी से एक वर्चुअल विनाशक की आवश्यकता होगी?
उपर्युक्त खाली विनाशक नहीं है। यह एक विनाशक है जो शुद्ध वर्चुअल फ़ंक्शन भी है। इसका खाली होने के साथ कुछ लेना देना नहीं है, और वास्तव में विनाशक विशेष है कि इसमें शुद्ध वर्चुअल होने पर भी हमेशा परिभाषा होनी चाहिए। –