BCA / B.Tech 8 min read

Virtual Destructor in Hindi

त्वरित सारांश और मुख्य बिंदु

  • • विषय फोकस: C++ Notes in Hindi | CPP नोट्स हिंदी में (BCA / B.Tech Syllabus)
  • • मुख्य विषय: Virtual Destructor in Hindi - General Topics
  • • अवलोकन: Virtual Destructor in C++ in Hindi | C++ में वर्चुअल डेस्ट्रक्टर :C++ में, वर्चुअल डेस्ट्रक्टर (Virtual Destructor) का उपयोग तब किया जाता है जब एक क्लास...
  • • मुख्य अवधारणाएं: C++ virtual destructor, Polymorphism base deletion Hindi, Memory leaks prevention,C++ virtual destructor, Polymorphism base deletion, Memory leaks prevention

Virtual Destructor in C++ in Hindi | C++ में वर्चुअल डेस्ट्रक्टर :


C++ में, वर्चुअल डेस्ट्रक्टर (Virtual Destructor) का उपयोग तब किया जाता है जब एक क्लास को एक बेस क्लास के रूप में डेराइव किया गया हो। 
वर्चुअल डेस्ट्रक्टर का मुख्य उद्देश्य यह सुनिश्चित करना है कि जब एक डेरिव्ड क्लास का ऑब्जेक्ट डिलीट किया जाता है, तो उसके सभी संसाधनों (resources) को सही तरीके से मुक्त (free) किया जाए।

C++ में वर्चुअल डेस्ट्रक्टर एक महत्वपूर्ण अवधारणा है, जो हमें यह सुनिश्चित करने में मदद करता है कि जब एक डेरिव्ड क्लास का ऑब्जेक्ट डिलीट होता है, तो उसके सभी संसाधनों को ठीक से मुक्त किया जाता है। 
इसे सही तरीके से उपयोग करने से हम मेमोरी लीक से बच सकते हैं और अपने प्रोग्राम के संसाधनों का बेहतर प्रबंधन कर सकते हैं। वर्चुअल डेस्ट्रक्टर का सही उपयोग करके, हम अपने प्रोग्राम को अधिक सुरक्षित और प्रभावी बना सकते हैं।


डेस्ट्रक्टर क्या होता है?

डेस्ट्रक्टर (Destructor) एक विशेष प्रकार का फंक्शन होता है जो ऑब्जेक्ट के जीवनकाल के अंत में स्वतः कॉल होता है। इसका उपयोग ऑब्जेक्ट द्वारा उपयोग किए जाने वाले संसाधनों को मुक्त करने के लिए किया जाता है।
डेस्ट्रक्टर का नाम क्लास के नाम के साथ ~ चिह्न के साथ लिखा जाता है, जैसे ~ClassName()।

वर्चुअल डेस्ट्रक्टर की आवश्यकता क्यों होती है?

  • जब हम बेस क्लास से डेराइव्ड क्लास बनाते हैं और डेरिव्ड क्लास का ऑब्जेक्ट बनाते हैं, तो हमें यह सुनिश्चित करना चाहिए कि डिलीट करते समय डेरिव्ड क्लास का डेस्ट्रक्टर सही तरीके से कॉल हो। अगर हम केवल बेस क्लास का डेस्ट्रक्टर उपयोग करते हैं
  •  और उसे वर्चुअल नहीं बनाते हैं, तो केवल बेस क्लास का डेस्ट्रक्टर कॉल होगा, और डेरिव्ड क्लास के डेस्ट्रक्टर को कॉल नहीं किया जाएगा। इससे मेमोरी लीक (memory leak) और अन्य समस्याएं हो सकती हैं।

वर्चुअल डेस्ट्रक्टर का उदाहरण :

उदाहरण कोड :

#include <iostream>
using namespace std;

class Base {
public:
    Base() {
        cout << "Base class constructor called." << endl;
    }

    virtual ~Base() {  // वर्चुअल डेस्ट्रक्टर
        cout << "Base class destructor called." << endl;
    }
};

class Derived : public Base {
public:
    Derived() {
        cout << "Derived class constructor called." << endl;
    }

    ~Derived() {
        cout << "Derived class destructor called." << endl;
    }
};

int main() {
    Base* b = new Derived();  // बेस क्लास पॉइंटर से डेरिव्ड क्लास का ऑब्जेक्ट बनाया गया
    delete b;  // डिलीट करते समय वर्चुअल डेस्ट्रक्टर काम करेगा
    return 0;
}
व्याख्या:

क्लास परिभाषा :

  • Base नामक एक बेस क्लास है जिसमें एक वर्चुअल डेस्ट्रक्टर है।
  • Derived नामक एक डेरिव्ड क्लास है जो Base क्लास से विरासत में मिला है और इसका अपना डेस्ट्रक्टर है।

ऑब्जेक्ट निर्माण:

  • Base* b = new Derived(); - यहां, हम एक बेस क्लास पॉइंटर का उपयोग करके डेरिव्ड क्लास का ऑब्जेक्ट बना रहे हैं। यह पॉइंटर Derived क्लास के ऑब्जेक्ट को पॉइंट करेगा।

डिलीट करना:

  • delete b; - जब हम इस पॉइंटर को डिलीट करते हैं, तो वर्चुअल डेस्ट्रक्टर के कारण, सबसे पहले डेरिव्ड क्लास का डेस्ट्रक्टर (~Derived) कॉल होता है, उसके बाद बेस क्लास का डेस्ट्रक्टर (~Base) कॉल होता है।

आउटपुट:

  • Base class constructor called.
  • Derived class constructor called.
  • Derived class destructor called.
  • Base class destructor called.

वर्चुअल डेस्ट्रक्टर के लाभ :

  • सुरक्षा: वर्चुअल डेस्ट्रक्टर का उपयोग करने से हम यह सुनिश्चित कर सकते हैं कि डेरिव्ड क्लास का डेस्ट्रक्टर हमेशा सही तरीके से कॉल होगा। इससे मेमोरी लीक और अन्य समस्याओं से बचा जा सकता है।
  • सही संसाधन प्रबंधन: यह सुनिश्चित करता है कि सभी संसाधनों को सही तरीके से मुक्त किया जा रहा है, जब किसी डेरिव्ड क्लास का ऑब्जेक्ट डिलीट किया जा रहा है।
  • पॉइंटर के माध्यम से वस्तुओं का प्रबंधन: यह ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (OOP) की अवधारणा के अनुरूप है, जहां हम बेस क्लास के पॉइंटर्स के माध्यम से डेरिव्ड क्लास के ऑब्जेक्ट्स को प्रबंधित करते हैं।

अक्सर पूछे जाने वाले प्रश्न (FAQs)

Virtual Destructor in C++ in Hindi | C++ में वर्चुअल डेस्ट्रक्टर :C++ में, वर्चुअल डेस्ट्रक्टर (Virtual Destructor) का उपयोग तब किया जाता है जब एक क्लास को एक बेस क्लास के रूप में डेराइव किया गया हो।&nbsp;वर्चुअल डेस्ट्रक्टर का मुख्य उद्देश्य यह सुनिश्चित।
C++ Notes in Hindi | CPP नोट्स हिंदी में के पाठ्यक्रम में Virtual Destructor in Hindi एक महत्वपूर्ण अध्याय है। यह मुख्य सिद्धांतों, परीक्षा प्रश्नों और सूत्रों को समझने के लिए अत्यधिक आवश्यक है।
हाँ, NotesMedia पर आपको Virtual Destructor in Hindi के महत्वपूर्ण प्रश्नोत्तर, हल किए गए उदाहरण और नोट्स बिल्कुल मुफ्त मिलेंगे। अधिक अभ्यास के लिए आप हमारा ऐप भी डाउनलोड कर सकते हैं।