Chapter 15 कन्स्ट्रक्टर्स एण्ड डिस्ट्रक्टर्स
बहुविकल्पीय प्रश्न (1 अंक)
प्रश्न 1.
प्रोग्राम में क्या, ऑब्जेक्ट के निर्माण के समय स्वतः ही क्रियान्वित हो जाता है?
(a) कन्स्ट्रक्टर
(b) डिस्ट्रक्टर
(c) क्लास
(d) फंक्शन
उत्तर
(a) कन्स्ट्रक्टर
प्रश्न 2.
C++ में, कन्स्ट्रक्टर्स कितने प्रकार के होते हैं?
(a) दो
(b) तीन
(c) चार
(d) पाँच
उत्तर
(b) C++ में तीन प्रकार के कन्स्ट्रक्टर्स-डिफॉल्ट, पैरामीटराइज्ड तथा कॉपी होते हैं।
प्रश्न 3.
कॉपी कन्स्ट्रक्टर का प्रारूप क्या है?
(a) class_name object 2 = object 1;
(b) class_name object 1 = object 2;
(c) class_name object 2:
(d) class_name object 2();
उत्तर
(a) class_name object 2 = object 1;
प्रश्न 4.
class_name ()
{
constructor_definition;
};
उपरोक्त प्रारूप है
(a) कॉपी कन्स्ट्रक्टर का
(b) पैरामीटराइज्ड कन्स्ट्रक्टर को
(c) डिफॉल्ट कन्स्ट्रक्टर का
(d) डिस्ट्रक्टर का
उत्तर
(c) डिफॉल्ट कन्स्ट्रक्टर का
प्रश्न 5.
आरग्यूमेण्ट वाले कन्स्ट्रक्टर को क्या कहा जाता है?
(a) कॉपी कन्स्ट्रक्टर
(b) डिफॉल्ट कन्स्ट्रक्टर
(c) फंक्शन कन्स्ट्रक्टर
(d) पैरामीटराइज्ड कन्स्ट्रक्टर
उत्तर
(d) पैरामीटराइज्ड कन्स्ट्रक्टर
अतिलघु उत्तरीय प्रश्न (1 अंक)
प्रश्न 1.
डिफॉल्ट कन्स्ट्रक्टर किसे कहते हैं?
उत्तर
जिस कन्स्ट्रक्टर फंक्शन में कोई आरग्यूमेण्ट नहीं होता, उसे डिफॉल्ट कन्स्ट्रक्टर कहा जाता है।
प्रश्न 2.
पैरामीटराइज्ड कन्स्ट्रक्टर को घोषित करने का प्रारूप लिखिए।
उत्तर
class_name object_name = constructor, name (arguments);
प्रश्न 3.
कॉपी कन्स्ट्रक्टर को समझाइए।
उत्तर
कॉपी कन्स्ट्रक्टर एक ऐसा कन्स्ट्रक्टर है, जिसके द्वारा किसी ऑब्जेक्ट के प्रारम्भिक मान रखने में उसी क्लास के किसी अन्य ऑब्जेक्ट के मानों का प्रयोग किया जाता है।
लघु-उत्तरीय प्रश्न। (2 अंक)
प्रश्न 1.
कन्स्ट्रक्टर पर संक्षिप्त टिप्पणी लिखिए। (2010, 08)
अथवा
कन्स्ट्रक्टर शब्द का अर्थ समझाइए। (2014)
उत्तर
प्रोग्राम में किसी क्लास टाइप को कोई ऑब्जेक्ट बनाने के लिए कम्पाइलर उसके लिए स्थान सुरक्षित करने के लिए एक फंक्शन को कम्पाइल करता है, जिसे कन्स्ट्रक्टर कहा जाता है। कन्स्ट्रक्टर किसी भी प्रकार की कोई वैल्यू रिटर्न नहीं करता। यह स्वतः ही कॉल होता है जब क्लास का ऑब्जेक्ट बनता है। इसका नाम क्लास के नाम के समान ही होता है।
प्रश्न 2.
डिस्ट्रक्टर का अर्थ समझाइए। (2013, 08)
अथवा
डिस्ट्रक्टर की व्याख्या संक्षेप में कीजिए। (2018) उत्तर डिस्ट्रक्टर किसी क्लास का एक विशेष सदस्य फंक्शन होता है, जो तब क्रियान्वित होता है जब उस क्लास का ऑब्जेक्ट सीमा (Scope) से बाहर जाता है। डिस्ट्रक्टर का नाम भी क्लास के नाम के समान ही होता है, परन्तु इसमें पहले टाइल्ड (~) प्रीफिक्स का उपयोग किया जाता है।
प्रश्न 3.
कन्स्ट्रक्टर तथा डिस्ट्रक्टर में अन्तर बताइए। (2012, 06)
उत्तर
कन्स्ट्रक्टर तथा डिस्ट्रक्टर में निम्न अन्तर है
कन्स्ट्र क्टर |
डिस्ट्रक्टर |
ये स्वतः ही कॉल होते हैं, जब ऑब्जेक्ट बनता है। |
ये स्वतः ही कॉल होते हैं, जब ऑब्जेक्ट सीमा (Scope) से बाहर जाता है। |
कन्स्ट्रक्टर का नाम क्लास के नाम के समान होता हैं। |
हिस्ट्रक्टर का नाम क्लास के नाम के समान होता है, परन्तु उसमें पहले टाइल्या (~) प्रीफिक्स का प्रयोग किया जाता है। |
प्रश्न 4.
डिस्ट्रक्टर की विशेषताएँ बताइए।
उत्तर
डिस्ट्रक्टर की विशेषताएँ निम्न हैं –
- एक डिस्ट्रक्टर के पास डिफॉल्ट आरग्यूमेण्ट हो सकते हैं।
- डिस्ट्रक्टर अपनी क्लास के सदस्य फंक्शन को कॉल कर सकता है।
- ये स्टैटिक नहीं हो सकते।
- ये स्वतः कॉल होते हैं, जब ऑब्जेक्ट्स सीमा (Scope) से बाहर जाते हैं।
लघु उत्तरीय प्रश्न।। (3 अंक)
प्रश्न 1.
कन्स्ट्रक्टर फंक्शन को कैसे इनव्रोक किया जाता है? कन्स्ट्रक्टर | फवशन की चार विशेषताओं को सूचीबद्ध करें। (2006)
उत्तर
कन्स्ट्रक्टर फंक्शन को इनवोक करना
#include
class Student
{
public:
Student ()
{
cout<<end1<<“Constructor Function”;
}
};
void main ()
{
Student stu;
}
कन्स्ट्रक्टर फंक्शन Student () ऑब्जेक्ट stu के बनते ही स्वत: कॉल हो जाएगा, जो निम्न आउटपुट प्रिण्ट करेगा
Constructor Function
कन्स्ट्रक्टर फंक्शन की विशेषताएँ निम्न हैं –
- कन्स्ट्रक्टर्स स्वतः ही कॉल होते हैं, जब ऑब्जेक्ट बनता है।
- कन्स्ट्रक्टर्स स्टैटिक नहीं हो सकते।
- कन्स्ट्रक्टर्स के पास डिफॉल्ट आरग्यूमेण्ट होते हैं।
- कन्स्ट्रक्टर अपनी क्लास के सदस्य फंक्शन को कॉल कर सकता है।
प्रश्न 2.
कन्स्ट्रक्टर को डिक्लेयर करने के नियम बताइए।
उत्तर
कन्स्ट्रक्टर को डिक्लेयर करते समय निम्नलिखित नियमों पर ध्यान देना चाहिए –
- कन्स्ट्रक्टर का नाम वही होना चाहिए जो क्लास का नाम है।
- कन्स्ट्रक्टर्स में पैरामीटर हो सकते हैं।
- कन्स्ट्रक्टर, फंक्शन को ओवरलोड कर सकता है।
- जिस कन्स्ट्रक्टर में कोई आरग्यूमेण्ट नहीं होता, वह डिफॉल्ट कन्स्ट्रक्टर होता हैं।
- कन्स्ट्रक्टर का एक्जीक्यूशन स्वयं होता हैं।
- कन्स्ट्रक्टर को public सेक्शन में डिक्लेयर किया जाता है।
- कन्स्ट्रक्टर का एड्रेस किसी को रेफर नहीं किया जा सकता।
- कन्स्ट्रक्टर स्वतः ही डिफॉल्ट तथा कॉपी कन्स्ट्रक्टर उत्पन्न कर सकता है।
प्रश्न 3.
डिस्ट्रक्टर को कैसे घोषित किया जाता है? समझाइए।
उत्तर
डिस्ट्रक्टर को दो प्रकार से घोषित किया जा सकता है, जो निम्न प्रकार हैं।
(i) क्लास के अन्दर डिस्ट्रक्टर
class Teacher
{
public:
Teacher ()
{
cout<<“Teacher is Present”;
}
~Teacher ()
{
cout<<“Teacher is Absent”;
}
};
(ii) क्लास के बाहर डिस्ट्रक्टर
class Teacher
{
public:
Teacher ()
{
cout<<“Teacher is Present”;
}
~Teacher ();
};
Teacher :: ~ Teacher ()
{
cout<<“Teacher is Absent”;
}
दीर्घ उत्तरीय प्रश्न (5 अंक)
प्रश्न 1.
कन्स्ट्रक्टर क्या है? इसे कैसे डिक्लेयर करते हैं? इसकी विशेषताएँ बताइट। (2008)
उत्तर
प्रोग्राम में किसी क्लास टाइप का कोई ऑब्जेक्ट बनाने के लिए कम्पाइलर उसके लिए स्थान सुरक्षित करने के लिए एक फंक्शन को कम्पाइल करता है, जिसे कन्स्ट्रक्टर कहा जाता है। कन्स्ट्रक्टर किसी भी प्रकार की कोई वैल्यू रिटर्न नहीं करता। यह स्वतः ही कॉल होता है जब क्लास का ऑब्जेक्ट बनता है। इसका नाम क्लास के नाम के समान ही होता है। कन्स्ट्रक्टर की विशेषताएँ निम्न हैं –
- कन्स्ट्रक्टर्स स्वतः ही कॉल होते हैं, जब ऑब्जेक्ट बनता है।
- कन्स्ट्रक्टर्स स्टैटिक नहीं हो सकते।
- कन्स्ट्रक्टर्स के पास डिफॉल्ट आरग्यूमेण्ट होते हैं।
- कन्स्ट्रक्टर अपनी क्लास के सदस्य फंक्शन को कॉल कर सकता है।
कन्स्ट्रक्टर को घोषित करना
जब कन्स्ट्रक्टर क्रियान्वित होता है तो यह वैल्यू रिटर्न नहीं करता। कन्स्ट्रक्टर को घोषित करने का प्रारूप,
class_name (argument_list);
(i) क्लास के अन्दर कन्स्ट्रक्टर
class Emp
{
public:
int sal;
Emp ()
{
cout<<“Employee Salary”
}
};
(ii) क्लास के बाहर कन्स्ट्रक्टर
class Emp
{
public:
int sal;
Emp ();
};
Emp :: Emp()
cout<<“Employee Salary”;
}
प्रश्न 2.
कन्स्ट्रक्टर के प्रकार पर संक्षिप्त टिप्पणी लिखिए। (2012)
उत्तर
कन्स्ट्रक्टर के प्रकार इसके लिए फास्ट ट्रैक रिविजन में पृष्ठ संख्या 70-71 का अध्ययन करें।
प्रश्न 3.
डिस्ट्रक्टर का अर्थ समझाइए। (2013, 08)
अथवा
डिस्ट्रक्टर को उदाहरण सहित समझाइए। (2011)
उत्तर
यह किसी क्लास का एक विशेष सदस्य फंक्शन होता है, जो तब क्रियान्वित होता है जब उस क्लास का ऑब्जेक्ट सीमा (Scope) से बाहर जाता है।
इसका नाम भी वही होता है, जो क्लास का नाम होता है, परन्तु उसमें पहले टाइल्ड (~) प्रीफिक्स का उपयोग किया जाता है।
उदाह्रण डिस्ट्रक्टर की क्रियाविधि
#include<iostream.h>
#include<conio.h>
class Line
{
private:
double length;
public:
void set Length (double len);
double getLength ();
Line (); //This is the constructor
//declaration
~Line(); //This is the destructor
//declaration
};
Line :: Line () //Constructor definition
{
cout<<“Object is being created”<<end1;
}
Line : : ~Line() //Destructor definition
{
cout<<“Object is being deleted”<<end1;
}
void Line :: set Length (double len)
{
length = len;
}
double Line :: getLength()
{
return length;
}
void main()
{
Line line; line.setLength(6.0); //set line length
cout<<“Length of line”;
cout<<line.getLength() <<end1;
getch();
}
आउटपुट
0bject is being created
Length of line 6
Object is being deleted