कंस्ट्रक्टर्स पर C++ इंटरव्यू प्रश्न
कंस्ट्रक्टर क्या है?
एक कंस्ट्रक्टर एक क्लास का फंक्शन है जिसका नाम क्लास के समान होता है। कंस्ट्रक्टर ऑब्जेक्ट के इनिशियलाइजेशन के समय कॉल होता है। कंस्ट्रक्टर तीन प्रकार के होते हैं -
- डिफॉल्ट कंस्ट्रक्टर
- पैरामीटराइज्ड कंस्ट्रक्टर
- कॉपी कंस्ट्रक्टर
सिंटैक्स
class cl_name{ cl_name(){ //यह कंस्ट्रक्टर है.. } }डिस्ट्रक्टर क्या है?
एक डिस्ट्रक्टर एक क्लास का मेथड है जिसका नाम क्लास के समान होता है लेकिन उसके पहले टिल्ड ~ सिंबल होता है। यह कोड के अंत में या जब ऑब्जेक्ट नष्ट होता है या स्कोप से बाहर जाता है तो कॉल होता है।
सिंटैक्स
class cl_name{ ~ cl_name(){} //डिस्ट्रक्टर }कंस्ट्रक्टर का उपयोग क्या है?
कंस्ट्रक्टर एक मेथड है जिसका नाम क्लास के समान होता है। और कंस्ट्रक्टर का उपयोग ऑब्जेक्ट को इनिशियलाइज़ करना है जब इसे new कीवर्ड का उपयोग करके बनाया जाता है।
जब एक ऑब्जेक्ट बनाया जाता है, तो वेरिएबल्स इनिशियलाइज़्ड मेमोरी चंक्स और बेस वैल्यूज होते हैं यदि कोई हैं।
डिस्ट्रक्टर का उपयोग क्या है?
डिस्ट्रक्टर एक मेथड है जिसका नाम क्लास के समान होता है लेकिन उसके पहले ~ सिंबल होता है। डिस्ट्रक्टर का उपयोग कोड के ऑब्जेक्ट के स्कोप से बाहर जाने या delete कीवर्ड का उपयोग करके डिलीट होने पर मेमोरी चंक्स को डीएलोकेट करना है।
जब ऑब्जेक्ट डिलीट होता है तो डिस्ट्रक्टर कॉल होता है और यह उन सभी मेमोरी ब्लॉक्स को डीएलोकेट कर देता है जो ऑब्जेक्ट बनने पर बने थे।
C++ में कंस्ट्रक्टर एक्जीक्यूशन का क्रम क्या है?
कंस्ट्रक्टर तब इनवोक होता है जब क्लास का ऑब्जेक्ट बनाया जाता है। जिस क्रम में कंस्ट्रक्टर इनवोक होता है वह इनहेरिटेंस के पदानुक्रम के समान होता है। इसका मतलब है कि पहले बेस क्लास का ऑब्जेक्ट इनवोक होता है फिर चाइल्ड क्लास के ऑब्जेक्ट्स इनवोक होते हैं और इसी तरह।
C++ में डिस्ट्रक्टर एक्जीक्यूशन का क्रम क्या है?
डिस्ट्रक्टर कंस्ट्रक्टर के विपरीत क्रम में इनवोक होता है और तब इनवोक होता है जब क्लास का ऑब्जेक्ट डिलीट होता है। जिस क्रम में डिस्ट्रक्टर इनवोक होता है वह इनहेरिटेंस के पदानुक्रम के बिल्कुल विपरीत होता है। इसका मतलब है कि पहले चाइल्ड क्लास का ऑब्जेक्ट नष्ट होता है फिर पैरेंट क्लास के ऑब्जेक्ट्स नष्ट होते हैं और इसी तरह।
क्या डिफॉल्ट कंस्ट्रक्टर तब भी बनता है जब हम कोई अन्य कंस्ट्रक्टर बनाते हैं?
कंपाइलर द्वारा कंस्ट्रक्टर्स डिफॉल्ट रूप से बनाए जाते हैं यदि प्रोग्रामर कोई कंस्ट्रक्टर स्पष्ट रूप से परिभाषित नहीं करता है। यदि प्रोग्रामर एक कंस्ट्रक्टर परिभाषित करता है तो कंपाइलर अपना काम रोक देता है और उनमें से किसी को भी परिभाषित नहीं करता है।