सी ++ में विनाशक एक वर्ग में सदस्य कार्य होते हैं जो किसी ऑब्जेक्ट को हटाते हैं। उन्हें तब बुलाया जाता है जब क्लास ऑब्जेक्ट स्कोप से बाहर हो जाता है जैसे कि जब फंक्शन समाप्त होता है, प्रोग्राम समाप्त होता है, एक डिलीट वेरिएबल कहा जाता है आदि।
विनाशक सामान्य सदस्य कार्यों से भिन्न होते हैं क्योंकि वे कोई तर्क नहीं लेते हैं और कुछ भी वापस नहीं करते हैं। इसके अलावा, विध्वंसक का नाम उनकी कक्षा के समान होता है और उनके नाम से पहले एक टिल्ड (~) होता है।
C++ में डिस्ट्रक्टर्स को प्रदर्शित करने वाला प्रोग्राम इस प्रकार दिया गया है।
उदाहरण
#include<iostream> using namespace std; class Demo { private: int num1, num2; public: Demo(int n1, int n2) { cout<<"Inside Constructor"<<endl; num1 = n1; num2 = n2; } void display() { cout<<"num1 = "<< num1 <<endl; cout<<"num2 = "<< num2 <<endl; } ~Demo() { cout<<"Inside Destructor"; } }; int main() { Demo obj1(10, 20); obj1.display(); return 0; }
आउटपुट
Inside Constructor num1 = 10 num2 = 20 Inside Destructor
उपरोक्त कार्यक्रम में, क्लास डेमो में एक पैरामीटरयुक्त कंस्ट्रक्टर होता है जो n1 और n2 द्वारा प्रदान किए गए मानों के साथ num1 और num2 को इनिशियलाइज़ करता है। इसमें एक फ़ंक्शन डिस्प्ले () भी होता है जो num1 और num2 के मान को प्रिंट करता है। डेमो में एक विध्वंसक भी होता है जिसे क्लास ऑब्जेक्ट का दायरा समाप्त होने पर कहा जाता है। इसके लिए कोड स्निपेट इस प्रकार दिया गया है।
class Demo { private: int num1, num2; public: Demo(int n1, int n2) { cout<<"Inside Constructor"<<endl; num1 = n1; num2 = n2; } void display() { cout<<"num1 = "<< num1 <<endl; cout<<"num2 = "<< num2 <<endl; } ~Demo() { cout<<"Inside Destructor"; } };
फ़ंक्शन मुख्य () में क्लास प्रकार डेमो के ऑब्जेक्ट के लिए ऑब्जेक्ट परिभाषा शामिल है। फिर फ़ंक्शन डिस्प्ले() कहा जाता है। यह नीचे दिखाया गया है।
Demo obj1(10, 20); obj1.display();