Constructors and Destructor in C++

एक Constructors, Object को Initialize करता हैं। यह Return नहीं करता। यह Public Function होता हैं, एवं इसका नाम वही होता हैं जो Class का नाम होता हैं। यह निम्‍न प्रकार के होते हैं –

Default Constructor

यह Constructor, Function, Argument, को प्राप्‍त नहीं करते हैं, एवं दी गई Default Value पर ही काम करते हैं।

Example :-
#include <iostream.h>
#include <conio.h>
class time
{
int h,m;
Public :
time() // default Constructor
{
h = 2;
m = 30;
}
void output ( )
{
Cout << “\n time is =” <<h<< “:” <<m;
}
};

void main ();
{
time t ;
t.output ();
}
output :- time is = 2:30

Parameterized Constructors

यह Arguments की प्राप्ति करते हैं। इसकी परिभाषा में हम Argument को सम्मिलित कर सकते हैं, जिसमें Programmer एक Object को तैयार करते समय ही Objects का प्रांरभिक मान स्‍पष्‍ट कर सकता हैं।

Example :-

#include <iostream.h>
#include <conio.h>
Class time
{
int h,m;
Public:
Time () //Default Constructor
{
h = 2;
m = 30;
}
time (int a, int b) //Parameterized Constructors
{
h = a;
m = b;
}
Void output ()
{
cout<<“\n time is =”<< h << “:”<< m;
}
};
void Main ()
{
clrscr();
time t1, t2 (8,30);
cout << “\n default Constructor”;
t1.output();
cout << “\n parameterize Constructor”;
t2.output();
}
Constructer Function में Argument प्रेषित करने का Syntax निम्‍न प्रकार हैं –


Class Name Object-name (Argument list)

Copy Constructor

ऐसा Constructer जिसके द्वारा घोषणा (Declare) के समय एक object का प्रारंभिक मान दूसरे object के मानों द्वारा निर्धारित किया जाता हैं। इसके कथन में Argument को Pass By Reference विधि द्वारा प्रेषित किया जाता हैं।

इसका Syntax निम्‍न प्रकार से हैं।

void main()
class_name first_object_name;
class_name second_object_name(first object name);

class class_name
{
Public;
Class_name (class_name &Object_name) // copy constructor
};

हम Copy Constructor में Argument को Pass By Value विधि द्वारा प्रेषित नहीं कर सकते हैं, ऐसा करने पर constructor स्‍वयं पर, स्‍वयं की ही Copy तब तक करता रहता हैं जब तक कि Compiler Memory में से हट नहीं जाता हैं।


Copy Constructor में एक Object की Value को दूसरे Object में Copy करने हेतु हम पहले Parameterized बनाते हैं। Default Constructor बनाते हैं।

Example :-
#include <iostream.h>
#include <conio.h>
class time
{
int h,m;
Public:
time()//Default Constructor
{
h = 2;
m = 20;
}
time (int a, int b, = 45) //Constructor With Default argument
{
h = a;
m = b;
}
time (time &r)//Copy Constructor
{
h = r.h;
m = r.m;
}
void output()
{
cout<<“\n time is =”<<h<<“:”<<m;
}
};
void main()
{
clrscr();
time t1, t2(8,30), t3(2), t4(t2);
cout << “\n default Constructor”;
t1.output();
cout<<“\n Constructor with default Argument”;
t3.output();
cout<<“\n copy Constructor”;
t4.output();
}
Note:- इसे ही Multiple Constructor भी कहते हैं क्‍योंकि इसमें एक से अधिक Constructors use किये जा रहे हैं।

Constructors With Default Arguments

सामान्‍य function के समान एक Constructor भी default मान रखता हैं। यहाँ यह आवश्‍यक हैं कि default argument सदैव अंतिम स्थिति वाले होने चाहिए।

Example

#include <iostream.h>
#include <conio.h>
class time
{
int h, m;
Public:
time (int a, int b = 45)
{
h = a;
m = b;
}
};
void main()
{
clrscr ();
time t3 (2);
t3.output();
cout<<“\n Constructor with default argument”;
}

Destructors in C++

Constructor के प्रतिलोम (opposite) होते हैं। यह Memory से Object को हटाता हैं।
Syntax
~class_name()
{
}

इसे Class के अन्‍दर कही भी लिख सकते हैं। Constructor Object को Memory आवंटित करता हैं तथा destructor के द्वारा object को आवंटित Memory को खाली किया जाता हैं। destructors का नाम class के नाम के समान ही होता हैं लेकिन इसमें Prefix के रूप में tilde (~) टिल्‍ड‍ चिन्‍ह लगा होता हैं।
Example

time() //constructor
{
}
~time() //destructors
{
}
Destructors को हम निम्‍न उदाहरण से समझ सकते हैं।

Example

#include<iostream.h>
#include<conio.h>
int a = 0;
class text
{
Private :
Public :
text()// Constructor
{
++a;
cout<<“\n object create”<<a;
}
~text()
{
–a;
cout<<“\n object destroy”<<a;
}
};

Summary of Constructor

  1. Constructor हमेशा public में declare किये जाते हैं।
  2. Object के निर्माण होने पर ये स्‍वत: execute हो जाते हैं।
  3. ये कोई मान return नहीं करते हैं।
  4. इनके गुणों को inherit नहीं किया जा सकता हैं।
  5. ये variable नहीं हो सकते हैं।
  6. इसका नाम class का नाम होता हैं।
  7. यह मुख्‍यतया class के object को initialize करता हैं।
  8. इसके द्वारा एक Object का मान दूसरे object को दिया जा सकता हैं।
  9. यह प्रत्‍येक object के अनुरूप system memory प्रदान करता हैं।
  10. यह Memory में Space वर्बाद होने से बचाता हैं।
  11. यह new Operator के द्वारा Object को Memory प्रदान कर dynamic Object का निर्माण करता हैं।

Summary of Destructor

  1. यह Constructor के प्रतिलोम (opposite) होते हैं।
  2. यह Constructor द्वारा तैयार Objects को आवंटित Memory को रिक्‍त करता हैं।
  3. इसमें Prefix के रूप में टिल्‍ड (~) चिन्‍ह लगाया जाता हैं।
  4. इसे Class के अन्‍दर या बाहर कभी भी परिभाषित किया जा सकता हैं।
  5. इसमें कोई Argument Pass नहीं किया जा सकता हैं।
  6. यह कोई Return Value नहीं देता हैं।
  7. Constructor के कार्य के बाद ही destructor का कार्य आरंभ होता हैं।
  8. यह Memory को आगे उपयोग हेतु रिक्‍त करते हैं।

error: Content is protected !!