C++ क्लास कंस्ट्रक्टर्स

C Class Constructors



कंस्ट्रक्टर फ़ंक्शन की तरह हैं। इनका उपयोग कक्षा के मूल्यों और वस्तुओं को प्रारंभ करने के लिए किया जाता है। इन कंस्ट्रक्टर्स को तब शुरू किया जाता है जब किसी क्लास का ऑब्जेक्ट बनाया जाता है। कंस्ट्रक्टर सीधे कोई मूल्य नहीं लौटाता है। कंस्ट्रक्टर का मान प्राप्त करने के लिए, हमें एक अलग फ़ंक्शन का वर्णन करने की आवश्यकता है क्योंकि कंस्ट्रक्टर के पास कोई रिटर्न प्रकार नहीं है। कंस्ट्रक्टर सरल कार्य से अलग-अलग तरीकों से भिन्न होता है। ऑब्जेक्ट उत्पन्न होने पर एक कंस्ट्रक्टर बनाया जाता है। इसे वर्ग के सार्वजनिक खंड में परिभाषित किया गया है।

इस लेख में, हम उदाहरणों के साथ इन सभी प्रकार के कंस्ट्रक्टरों पर विचार करेंगे।







उदाहरण 1

यह एक डिफ़ॉल्ट कंस्ट्रक्टर का एक उदाहरण है। जैसा कि हम जानते हैं कि जब हम किसी क्लास का ऑब्जेक्ट बनाते हैं तो कंस्ट्रक्टर अपने आप डिफॉल्ट हो जाते हैं। इसे अव्यक्त रचना कहा जाता है। कंस्ट्रक्टर उसी नाम के हैं जो वर्ग का नाम है। कंस्ट्रक्टर के c ++ कोड वाली फ़ाइल पर विचार करें क्योंकि हम जानते हैं कि क्लास में दो विकल्प हैं, निजी और सार्वजनिक। निजी भाग में डेटा चर होते हैं, जबकि सार्वजनिक भाग किसी भी वस्तु द्वारा प्राप्त कार्यों के लिए होता है। तो कंस्ट्रक्टर को सार्वजनिक भाग में भी परिभाषित किया गया है।



पूर्णांक()

{

एक्स=पचास;

तथा=बीस;

};

इस कंस्ट्रक्टर में, वेरिएबल्स को मान असाइन किए जाते हैं। यदि हम मूल्यों को आउटपुट के रूप में प्राप्त करना चाहते हैं, तो हमें उन्हें मुख्य कार्यक्रम में प्रिंट करना होगा।







कंस्ट्रक्टर को परिभाषित करने के बाद, क्लास बंद हो जाती है। मुख्य कार्यक्रम में प्रवेश करते समय, हम एक वस्तु का उपयोग करके मूल्यों का प्रिंट लेंगे। ऑब्जेक्ट हमेशा कंस्ट्रक्टर्स तक पहुंचता है क्योंकि ये क्लास के हिस्से हैं। वस्तु निर्माण इतना सरल है। इसे कक्षा के नाम से परिचित कराकर किया जाता है। यह इस उदाहरण में एक पूर्णांक है। मान डॉट विधि के माध्यम से प्राप्त किया जाएगा। यानी, ए.एक्स.

हम उबंटू में टर्मिनल से सोर्स कोड का आउटपुट देख सकते हैं। आउटपुट प्राप्त करने के लिए उपयोग किया जाने वाला तरीका काफी आसान है। सबसे पहले कोड संकलित किया जाता है, और फिर इसे निष्पादित किया जाता है। हम संकलन प्रक्रिया के लिए G++ कंपाइलर का उपयोग करते हैं। जैसे C के मामले में, हम GCC का उपयोग करते हैं।



$ जी++ -या filec filec.सी

./फाइलसी

-O का प्रयोग फाइल में आउटपुट को सेव करने के लिए किया जाता है।

उदाहरण 2

इस उदाहरण में, हम पैरामीटरयुक्त कंस्ट्रक्टरों की व्याख्या करने जा रहे हैं। पिछले उदाहरण के विपरीत, हम मुख्य कार्यक्रम से कंस्ट्रक्टरों को तर्क भी दे सकते हैं। जब ऑब्जेक्ट उत्पन्न होता है, तो ये मान मान प्राप्त करने के लिए कंस्ट्रक्टर में मौजूद वेरिएबल्स को स्वचालित रूप से पास कर दिए जाते हैं। पैरामीटराइज्ड कंस्ट्रक्टर्स के कुछ उपयोग हैं।

  • इसका उपयोग इनिशियलाइज़ होने पर कंस्ट्रक्टर्स के अंदर अलग-अलग वैल्यू के साथ अलग-अलग वेरिएबल्स को इनिशियलाइज़ करने के लिए किया जाता है।
  • इसका उपयोग कंस्ट्रक्टर ओवरलोडिंग में किया जाता है। इसे बाद में लेख में परिभाषित किया गया है।

आइए अब हम उस दृष्टांत पर विचार करें जिसका वर्णन हमने इस अवधारणा को विस्तृत करने के लिए किया है। वर्ग का नाम पूर्णांक है, इसलिए निश्चित रूप से, निर्माता का नाम भी वही होगा। कंस्ट्रक्टर के मापदंडों में, दो पूर्णांक प्रकार के मान होते हैं। इन्हें मुख्य प्रोग्राम से फ़ंक्शन कॉल के रूप में भेजे गए मानों को स्वीकार करने के लिए प्रारंभ किया जाता है।

पूर्णांक( NSएक्स,NSतथा)

{

प्रति=एक्स;

बी=तथा;

};

पिछले उदाहरण में, कंस्ट्रक्टर के अंदर के चरों को मान दिया गया था। जबकि इस कंस्ट्रक्टर में, वेरिएबल को वेरिएबल के साथ वेरिएबल के साथ असाइन किया जाता है।

यदि हम प्रदर्शन लेना चाहते हैं, तो हमें एक फ़ंक्शन को परिभाषित करने की आवश्यकता है जो मान लौटाएगा क्योंकि उस प्रारंभिक चर को सीधे निर्माता से एक्सेस करना संभव नहीं है।

NSगेटएक्स()

{

वापसीप्रति;

};

अब हम कार्यक्रम का मुख्य भाग देखेंगे। यहां जब ऑब्जेक्ट बनाया जाता है, तो आप पैरामीटर सेक्शन में मान देख सकते हैं।

पूर्णांक v(70,55); {अंतर्निहित}

पूर्णांक v=पूर्णांक(10,पंद्रह); {मुखर}

और परिणाम प्रदर्शित करने के लिए, हम ऑब्जेक्ट का उपयोग करके कक्षा के अंदर बनाए गए कार्यों को कॉल करेंगे। यानी v.getx ()।

रिकॉर्ड लाने का तरीका वही है जो पहले पेश किया गया था।

उदाहरण 3

यह उदाहरण एक वर्ग के एक निर्माता की नकल से संबंधित है। एक कॉपी किए गए कंस्ट्रक्टर का उपयोग ऑब्जेक्ट को उसी वर्ग के किसी अन्य ऑब्जेक्ट के साथ प्रारंभ करने के लिए किया जाता है, जिसका वह संबंधित है। यह कंस्ट्रक्टर एक ऑब्जेक्ट में मौजूद डेटा को दूसरी ऑब्जेक्ट में कॉपी करता है। इस कंस्ट्रक्टर के पैरामीटर में क्लास के ऑब्जेक्ट का एड्रेस होता है। दिए गए उदाहरणों पर विचार करें, जिसमें हमने एक ही डेटा प्रकार के दो चर पेश किए हैं ताकि ये कक्षा के अंदर किसी भी फ़ंक्शन द्वारा एक्सेस कर सकें। कंस्ट्रक्टर को वेरिएबल के माध्यम से मान प्राप्त होंगे। उसी समय, कॉपी किए गए कंस्ट्रक्टर को केवल ऑब्जेक्ट प्राप्त होगा। और इस ऑब्जेक्ट की मदद से वैल्यूज लाई जाएंगी।

दीवार(दीवारऔरओब्जो)

{

लंबाई=ओबीजेलंबाई;

ऊंचाई=ओबीजेऊंचाई;

}

हमें क्षेत्रफल की गणना करनी है, इसलिए इस गणना के लिए फ़ंक्शन यहां परिभाषित किया गया है। जब इसे कॉल किया जाता है तो यह मान को मुख्य फ़ंक्शन पर वापस कर देगा। अब हम कोड के मुख्य कार्यक्रम का निरीक्षण करेंगे

कॉपी किए गए कंस्ट्रक्टर की फंक्शन कॉल इस तरह होगी।

दीवार की दीवार2=दीवार1;

ऑब्जेक्ट कॉपी किए गए कंस्ट्रक्टर को कॉल करता है, और पहले ऑब्जेक्ट के माध्यम से डेटा को इसके माध्यम से कॉपी किया जाता है। इसके अलावा, हम दोनों वस्तुओं के माध्यम से क्षेत्र की गणना करने के लिए फ़ंक्शन को कॉल करेंगे।

आउटपुट से, आप देख सकते हैं कि दोनों कंस्ट्रक्टरों का परिणाम समान है। इसका मतलब है कि पूरे डेटा को ऑब्जेक्ट द्वारा सफलतापूर्वक कॉपी किया गया था।

उदाहरण 4

यह कंस्ट्रक्टर ओवरलोडिंग का एक उदाहरण है। ऐसा तब होता है जब हमें क्लास के अंदर एक से ज्यादा फंक्शन का इस्तेमाल करना होता है। कंस्ट्रक्टर ओवरलोडिंग पैरामीटरयुक्त कंस्ट्रक्टर्स के निर्देशों का पालन करता है। क्लास के सभी कंस्ट्रक्टर्स का नाम क्लास के समान होता है। लेकिन प्रत्येक कंस्ट्रक्टर को अलग-अलग पैरामीटर दिए गए हैं। जब हम ऑब्जेक्ट बनाते हैं तो प्रत्येक कंस्ट्रक्टर को तर्क के अनुसार बुलाया जाता है।

दिए गए एक उदाहरण पर विचार करें, जिसमें हमने तीन कंस्ट्रक्टर्स का उपयोग किया है। एक बिना किसी तर्क के है। दूसरा एक तर्क के साथ है, जबकि तीसरा दो तर्कों के साथ है। यह दृष्टांत पिछले एक के समान है। जैसा कि हम वर्ग के अंदर वर्णित अलग फ़ंक्शन में क्षेत्रफल की गणना करते हैं।

// कंस्ट्रक्टर दो तर्कों के साथ

आकार(NSएक्स,NSतथा)

{

प्रति=एक्स;

बी=तथा;

};

अब, मुख्य कार्यक्रम की ओर बढ़ते हुए, हम देख सकते हैं कि जब हम क्लास ऑब्जेक्ट शुरू करते हैं, तो बिना तर्क वाले कंस्ट्रक्टर को डिफ़ॉल्ट रूप से कहा जाता है। अब हमें अन्य कंस्ट्रक्टर्स को अलग-अलग ऑब्जेक्ट्स वाले अलग-अलग तर्कों के साथ कॉल करने की आवश्यकता है।

आकार;

आकार s2(8);

आकार s3(4,2);

जिस फ़ंक्शन के माध्यम से हम मान प्रदर्शित कर सकते हैं उसे उसी ऑब्जेक्ट के माध्यम से बुलाया जाता है।

आउटपुट देखने के लिए, हम फ़ाइल में मौजूद कोड को संकलित और निष्पादित करके उसी कमांड टर्मिनल विधि का उपयोग करेंगे।

आउटपुट से, हम देख सकते हैं कि प्रत्येक कंस्ट्रक्टर के लिए उत्तर समान है।

निष्कर्ष

इस ट्यूटोरियल में, हमने कंस्ट्रक्टर्स की मूल बातें और उनकी कार्यक्षमता को देखा है, जिसमें उन्हें ओवरलोड करने का तरीका भी शामिल है। कंस्ट्रक्टर्स का उपयोग वैरिएबल को वैल्यू के साथ इनिशियलाइज़ करने के लिए किया जाता है।