विनाशक c++ क्लास का एक फंक्शन है जो क्लास के ऑब्जेक्ट को डिलीट करने का काम करता है।
विनाशक को कॉल करना
विध्वंसक को तब कहा जाता है जब किसी वर्ग की वस्तु कार्यक्रम के दायरे से बाहर हो जाती है। मामले जब वस्तु दायरे से बाहर हो जाती है,
-
कार्यक्रम एक समारोह के दायरे से बाहर चला जाता है।
-
कार्यक्रम समाप्त होता है।
-
ऑब्जेक्ट के स्थानीय वैरिएबल को इनिशियलाइज़ करने वाला ब्लॉक दायरे से बाहर हो जाता है।
-
जब ऑब्जेक्ट का ऑपरेटर हटा दिया जाता है।
उदाहरण
आइए एक कोड देखें और प्रोग्राम के आउटपुट का अनुमान लगाएं,
#include <iostream> using namespace std; int i; class destructor { public: ~destructor(){ i=10; } }; int valueInitializer() { i=3; destructor d1; return i; } int main() { cout<"i = "<<valueInitializer()<<endl; return 0; }
आउटपुट
i = 3
आइए पहले कोड को समझें, यहां हमने एक वैश्विक चर I बनाया है और फिर मूल्य आरंभिक फ़ंक्शन में हमने इसका मान बदल दिया है। यहां, हमने इसे मान 3 के साथ प्रारंभ किया है, फिर ऑब्जेक्ट d1 बनाया है और फिर मान वापस कर दिया है।
आउटपुट का अनुमान लगाएं?
यह 3 है, अगर आपने सही अनुमान लगाया तो आपके लिए ताली बजाएं और अगर आपको लगता है कि यह 10 है तो कोई चिंता नहीं है। अब, देखें कि यहां क्या हुआ,
जैसा कि ऊपर चर्चा की गई है विनाशक को बुलाया जाता है जब कॉलिंग फ़ंक्शन दायरे से बाहर हो जाता है। और दायरे से बाहर जाने से पहले फ़ंक्शन ने मान 3 वापस कर दिया है।
उदाहरण
एक बार फिर इस ब्लॉक के आउटपुट का अनुमान लगाने की कोशिश करें,
#include <iostream> using namespace std; int i; class destructor { public: ~destructor(){ i=10; } }; int& valueInitializer() { i=3; destructor d1; return i; } int main() { cout<<"i = "<<valueInitializer()<<endl; return 0; }
आउटपुट
यह एक समान दिखने वाला कोड है लेकिन यह एक है
प्रिंट :i =10 इसके बजाय।
क्यों?
यहां, हमने वैल्यू के बजाय वेरिएबल रेफरेंस लौटाया है। इसलिए, जब विनाशक को बुलाया जाता है तो यह मान को 10 में बदल देता है और जैसे ही संदर्भ पास होता है 10 मुद्रित होता है।