सी ++ प्रोग्राम में शुद्ध वर्चुअल विनाशक को अनुमति देने के कोई दुष्प्रभाव नहीं हैं। शुद्ध आभासी विनाशक के लिए एक फ़ंक्शन बॉडी प्रदान करना आवश्यक है क्योंकि व्युत्पन्न वर्ग के विनाशक को बेस क्लास विनाशक से पहले बुलाया जाता है, इसलिए यदि हम एक फ़ंक्शन बॉडी प्रदान नहीं करते हैं, तो ऑब्जेक्ट विनाश के दौरान कुछ भी नहीं कहा जाएगा और त्रुटि होगी . हम इसकी परिभाषा के साथ एक शुद्ध आभासी विनाशक बनाकर आसानी से एक अमूर्त वर्ग बना सकते हैं।
उदाहरण कोड
#include <iostream> using namespace std; class B { public: virtual ~B()=0; // Pure virtual destructor }; B::~B() { cout << "Pure virtual destructor is called"; } class D : public B { public: ~D() { cout << "~Derived\n"; } }; int main() { B *b = new D(); delete b; return 0; }
आउटपुट
~Derived Pure virtual destructor is called