C++ destructor
सरल शब्दों में , एक C++ destructor का प्रयोग constructor द्वारा create किये गए object को destroy करने के लिए किया जाता है।
अन्य शब्दों में ,
जैसे constructor का उपयोग class -variable को initialize करने के लिए किया जाता है। ठीक उसी तरह C ++ destructor का उपयोग constructor द्वारा initialize-object को destroy करने के लिए किया जाता है।
यहाँ syntax है,
~function-name();
इसमें, constructor की ही तरह, destructor का नाम class -नाम जैसा ही होगा।
C ++ program में constructor के साथ destructor का भी प्रयोग किया जाता है। परन्तु क्यों?
why we use destructor in C++?
जैसा कि हम जानते हैं कि constructor से हम किसी class -variable को initialize कर सकते हैं एक built in data type की तरह। लेकिन जहाँ एक साधारण data type में variable के out of scope जाने पर यह compiler द्वारा automatic destroy हो जाता है वहीँ class में ऐसा नहीं होता। ऐसी स्थति में हम Destructor प्रयोग में लाते हैं फलस्वरूप जैसे class-variable out of scope जाता है वैसे ही compiler destructor को invoke कर देता है।
एक class में हमें constructor को destroy करने की आवश्यकता पड़ती है (out of scope जाने पर ) जबकि built in data type के साथ ऐसा कुछ नहीं होता।
Rule for declaring a destructor in C++
- constructor की तरह ही एक destructor function को class के public में declare किया जाता है जबकि इसकी definition , outside class या inside class हो सकती है (अन्य members की तरह scope resolution operator का use करके)।
- constructor member , class-name के समान ही होता है। जिसका यह member होता है।
- जैसे ही उस class का object declare किया जाता है (जिसका यह member होता है) यह स्वतः ही call हो जाता है।
- एक destructor function return type का नहीं होगा हालाँकि यह void type भी नहीं होगा।
- destructor member inherit नहीं किया जा सकता है, हालांकि derive class से call कराया जा सकता है।
- destructor overload नहीं किया जा सकता।
- एक destructor function को एक tilde sign (~) द्वारा दर्शाया जाता है।
नीचे दिए गए syntax में, destructor को public में declare किया गया है,
Class class-name
{
public:
~class-name (); // public mode
};
class-name::~class-name()
{
......
......
}
इसका program नीचे दिया गया है –
#include<iostream.h>
#include<conio.h>
int count = 1;
class execute
{
public:
execute(void); // constructor declaration in public mode
~execute(void); // destructor declaration in public mode
};
execute::execute(void) // constructor defination outside class
{
cout<<"object "<<count++<<" created\n";
}
execute::~execute(void) // destructor defination outside class
{
int t_c = count--;
cout<<"object "<<t_c-1<<" destroyed\n";;
getch();
}
void main()
{
clrscr();
execute x,y,z; // object declare
cout<<endl;
getch();
}
OUTPUT
object 1 created
object 2 created
object 3 created
object 3 destroyed
object 2 destroyed
object 1 destroyed
Explanation
उदाहरण के लिए, यहां एक constructor member 3 object (x, y, z) को initialize करता है और एक destructor member उन objects को reverse order में destroy करता है।
ध्यान रखें कि destroyer सदस्य output में दिखाए गए अनुसार ऑब्जेक्ट को reverse तरीके से नष्ट करेगा।
previous – constructor in C++ in hindi
next – inheritance in C++ in hindi