डिस्ट्रक्टर क्या है?
डिस्ट्रक्टर क्लास का सदस्य फ़ंक्शन है जो ऑब्जेक्ट को नष्ट करता है। जब ऑब्जेक्ट स्कोप से बाहर जाता है (फ़ंक्शन समाप्त, प्रोग्राम समाप्त, delete कॉल) तो स्वचालित रूप से कॉल होता है।
विशेषताएं
- कोई पैरामीटर नहीं लेता
- कोई रिटर्न मान नहीं
- नाम: क्लास का नाम जिस पर टिल्ड (~) लगा हो
- एक क्लास में केवल एक डिस्ट्रक्टर हो सकता है
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
कोड व्याख्या
Demo क्लास
पैरामीट्रिक कंस्ट्रक्टर num1, num2 को आरंभ करता है। डिस्ट्रक्टर ~Demo() ऑब्जेक्ट नष्ट होने पर संदेश प्रिंट करता है।
मुख्य फ़ंक्शन
obj1 को आर्गुमेंट्स के साथ बनाता है (कंस्ट्रक्टर कॉल), display() कॉल करता है, फिर main समाप्त होने पर ऑब्जेक्ट स्कोप से बाहर जाता है और डिस्ट्रक्टर कॉल होता है।
उपयोग के मामले
- डायनामिक मेमोरी मुक्त करना (new के साथ आवंटित)
- फाइल हैंडल बंद करना
- नेटवर्क कनेक्शन बंद करना
- अन्य संसाधन सफाई
RAII (Resource Acquisition Is Initialization)
C++ में संसाधन प्रबंधन का मानक पैटर्न: कंस्ट्रक्टर में संसाधन प्राप्त करें, डिस्ट्रक्टर में मुक्त करें।