Notes in Hindi

Destructor Function in Hindi

/ BCA / Programming with C and CPP

Destructor Function in Hindi

Destructor Function in Hindi

Introduction to Destructor Function in Hindi

जब भी हम Object Oriented Programming की बात करते हैं, तो वहाँ पर Constructor और Destructor दो बहुत ही महत्वपूर्ण concepts होते हैं। आप Constructor को उस function की तरह समझ सकते हैं जो object बनने के समय अपने आप call होता है, वहीं Destructor एक ऐसा function होता है जो object के destroy होने पर अपने आप call हो जाता है। यानी जब object का काम खत्म हो जाता है, या वह memory से हटाया जाता है, तब Destructor function को call किया जाता है।

एक इंसान के जीवन से तुलना करें — जैसे जन्म लेने पर इंसान की जिंदगी शुरू होती है (Constructor), और मृत्यु के समय उसका अंत होता है (Destructor)। इसी तरह object बनता है तब constructor call होता है, और object खत्म होता है तब destructor call होता है।

Destructor का मुख्य उद्देश्य यह होता है कि वह object द्वारा इस्तेमाल की गई memory या resources को वापस कर दे ताकि प्रोग्राम efficiently काम कर सके और कोई memory leakage ना हो।

Syntax and Usage of Destructor Function in Hindi

Destructor का syntax बहुत ही simple होता है। यह बिल्कुल constructor जैसा ही होता है लेकिन इसका नाम class के नाम से पहले tilde (~) symbol के साथ होता है और इसका कोई return type नहीं होता, ना ही यह कोई argument लेता है।

  • Destructor का नाम हमेशा class के नाम से मिलता है
  • इसके आगे ~ symbol लगता है
  • यह कोई value return नहीं करता
  • यह किसी भी argument को accept नहीं करता
  • यह function automatically call होता है object destroy होने पर

Destructor Syntax in C++:

class ClassName {
  public:
    ~ClassName() {
      // Destructor code here
    }
};

Example:

#include<iostream>
using namespace std;

class Student {
  public:
    Student() {
      cout << "Constructor called" << endl;
    }

    ~Student() {
      cout << "Destructor called" << endl;
    }
};

int main() {
  Student s1;
  return 0;
}

ऊपर दिए गए उदाहरण में, जैसे ही object s1 बनता है, constructor call होता है और जैसे ही main() function खत्म होता है, object destroy हो जाता है और destructor call होता है।

Difference Between Constructor and Destructor Function in Hindi

आइए अब Constructor और Destructor के बीच का अंतर एक table के माध्यम से समझते हैं:

बिंदु Constructor Destructor
कब call होता है Object के बनते समय Object के destroy होने पर
नाम Class के नाम जैसा Class के नाम से पहले ~ symbol
Return type नहीं होता नहीं होता
Arguments ले सकता है? हाँ (Overloaded हो सकता है) नहीं (Overloaded नहीं हो सकता)
कितने हो सकते हैं? एक से अधिक हो सकते हैं (Overloading) सिर्फ एक destructor होता है
कहाँ पर उपयोग होता है? Object को initialize करने में Memory free करने में

Automatic Calling of Destructor Function in Hindi

Destructor function को manually call नहीं किया जाता। यह automatically call होता है जब object की lifetime खत्म होती है। Object की lifetime उस block तक सीमित होती है जिसमें वह बनाया गया है। जैसे ही वह block खत्म होता है, object destroy हो जाता है और destructor function अपने आप call हो जाता है।

मान लीजिए कि आपने एक object obj को main() function में बनाया है। जैसे ही main() function का execution complete होता है, obj destroy हो जाता है और उसका destructor call हो जाता है।

Example:

#include<iostream>
using namespace std;

class Book {
  public:
    Book() {
      cout << "Book Constructor called" << endl;
    }

    ~Book() {
      cout << "Book Destructor called" << endl;
    }
};

int main() {
  {
    Book b1;
  } // यहाँ scope खत्म होते ही destructor call होगा

  cout << "Back to main" << endl;
  return 0;
}

ऊपर के उदाहरण में object b1 को एक अलग block में declare किया गया है। जैसे ही वह block समाप्त होता है, destructor अपने आप call हो जाता है।

इस तरह destructor function का काम है कि वह object के destroy होने के समय resources को release कर दे। इससे प्रोग्राम की memory usage कम होती है और performance बेहतर होता है।

Destructor function खास तौर पर तब बहुत काम आता है जब आप dynamic memory allocation करते हैं यानी new keyword का प्रयोग करते हैं। तब destructor के अंदर आपको delete या free जैसे function use करने पड़ते हैं ताकि memory release हो जाए।

Example of Dynamic Allocation:

#include<iostream>
using namespace std;

class Data {
  int* ptr;

  public:
    Data() {
      ptr = new int;
      *ptr = 100;
      cout << "Memory allocated for ptr" << endl;
    }

    ~Data() {
      delete ptr;
      cout << "Memory released for ptr" << endl;
    }
};

int main() {
  Data d;
  return 0;
}

इस program में object d के लिए constructor के अंदर memory allocate की गई और destructor के अंदर उसे release किया गया। यही destructor का main purpose होता है — resource clean-up करना।

इसलिए जब भी आप object बनाते हैं और उसमें dynamic memory या file handle या database connection use करते हैं, तो destructor में उन्हें close या delete जरूर करें ताकि कोई resource leakage न हो।

FAQs

Destructor एक special member function होता है जो object के destroy होने पर अपने आप call होता है। इसका मुख्य उद्देश्य memory या other resources को free करना होता है जो object ने use किए हैं।
Destructor function object के lifetime के खत्म होने पर अपने आप call हो जाता है। जैसे ही object उस scope से बाहर होता है जिसमें वह बनाया गया था, destructor automatically call हो जाता है।
C++ में Destructor का syntax class के नाम के साथ ~ symbol लगाकर लिखा जाता है, जैसे:
~ClassName() { // code }
इसमें कोई return type और arguments नहीं होते।
Constructor object के बनते समय call होता है और initialization करता है, जबकि Destructor object के destroy होते समय call होता है और cleanup करता है। Constructor overloaded हो सकता है लेकिन Destructor नहीं।
नहीं, C++ में destructor को overload नहीं किया जा सकता। एक class में केवल एक ही destructor होता है और वह कोई भी parameter accept नहीं करता।

Please Give Us Feedback