C ++ कंस्ट्रक्टर्स: टाइप और कॉपी कंस्ट्रक्टर्स

इस ट्यूटोरियल में, हम C ++ कंस्ट्रक्टर और इसके प्रकार के बारे में उदाहरणों के साथ जानेंगे।

एक कंस्ट्रक्टर एक विशेष प्रकार का सदस्य फ़ंक्शन है जो किसी ऑब्जेक्ट के बनने पर स्वचालित रूप से कहा जाता है।

C ++ में, एक कंस्ट्रक्टर का नाम कक्षा के समान होता है और इसमें रिटर्न प्रकार नहीं होता है। उदाहरण के लिए,

 class Wall ( public: // create a constructor Wall() ( // code ) );

यहाँ, फ़ंक्शन Wall()क्लास का एक कंस्ट्रक्टर है Wall। गौर करें कि कंस्ट्रक्टर

  • वर्ग के समान नाम है,
  • वापसी प्रकार नहीं है, और
  • है public

C ++ डिफ़ॉल्ट कंस्ट्रक्टर

बिना किसी पैरामीटर के एक कंस्ट्रक्टर को डिफ़ॉल्ट कंस्ट्रक्टर के रूप में जाना जाता है । ऊपर के उदाहरण में, Wall()एक डिफ़ॉल्ट निर्माता है।

उदाहरण 1: C ++ डिफ़ॉल्ट कंस्ट्रक्टर

 // C++ program to demonstrate the use of default constructor #include using namespace std; // declare a class class Wall ( private: double length; public: // create a constructor Wall() ( // initialize private variables length = 5.5; cout << "Creating a wall." << endl; cout << "Length = " << length << endl; ) ); int main() ( // create an object Wall wall1; return 0; )

आउटपुट:

 एक दीवार की लंबाई = 5.5 बनाना

यहां, जब वॉल 1 ऑब्जेक्ट बनाया जाता है, तो Wall()कंस्ट्रक्टर कहा जाता है। यह ऑब्जेक्ट की लंबाई चर सेट करता है 5.5

नोट: यदि हमने अपनी कक्षा में एक कंस्ट्रक्टर को परिभाषित नहीं किया है, तो C ++ कंपाइलर स्वचालित रूप से एक खाली कोड के साथ एक डिफ़ॉल्ट कंस्ट्रक्टर बनाएगा और कोई पैरामीटर नहीं होगा।

सी ++ परिमार्जित कंस्ट्रक्टर

C ++ में, पैरामीटर के साथ एक कंस्ट्रक्टर को एक मानकीकृत कंस्ट्रक्टर के रूप में जाना जाता है। यह सदस्य डेटा को इनिशियलाइज़ करने के लिए पसंदीदा तरीका है।

उदाहरण 2: C ++ Parameterized कंस्ट्रक्टर

 // C++ program to calculate the area of a wall #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // create parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) double calculateArea() ( return length * height; ) ); int main() ( // create object and initialize data members Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3); cout << "Area of Wall 1: " << wall1.calculateArea() << endl; cout << "Area of Wall 2: " << wall2.calculateArea() << endl; return 0; )

आउटपुट:

 दीवार 1 का क्षेत्र: 90.3 दीवार 2 का क्षेत्रफल: 53.55

यहां, हमने एक पैरामीटर निर्मित निर्माता बनाया Wall()है जिसमें 2 पैरामीटर हैं: double lenऔर double hgt। इन मापदंडों में निहित मूल्यों का उपयोग सदस्य चर लंबाई और ऊंचाई को आरंभ करने के लिए किया जाता है।

जब हम Roomकक्षा का एक ऑब्जेक्ट बनाते हैं , तो हम सदस्य चर के लिए मानों को तर्क के रूप में पास करते हैं। इसके लिए कोड है:

 Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3);

इस तरह से शुरू किए गए सदस्य चर के साथ, हम अब calculateArea()फ़ंक्शन के साथ दीवार के क्षेत्र की गणना कर सकते हैं ।

C ++ कॉपी कंस्ट्रक्टर

C ++ में कॉपी कंस्ट्रक्टर का उपयोग एक ऑब्जेक्ट के डेटा को दूसरे में कॉपी करने के लिए किया जाता है।

उदाहरण 3: C ++ कॉपी कंस्ट्रक्टर

 #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) // copy constructor with a Wall object as parameter Wall(Wall &obj) ( // initialize private variables length = obj.length; height = obj.height; ) double calculateArea() ( return length * height; ) ); int main() ( // create an object of Wall class Wall wall1(10.5, 8.6); // print area of wall1 cout << "Area of Room 1: " << wall1.calculateArea() << endl; // copy contents of room1 to another object room2 Wall wall2 = wall1; // print area of wall2 cout << "Area of Room 2: " << wall2.calculateArea() << endl; return 0; )

आउटपुट

 कक्ष 1 का क्षेत्रफल: 90.3 कक्ष 2 का क्षेत्र: 90.3

इस कार्यक्रम में, हमने Wallक्लास के एक ऑब्जेक्ट की सामग्री को दूसरे में कॉपी करने के लिए एक कॉपी कंस्ट्रक्टर का उपयोग किया है । प्रतिलिपि निर्माता का कोड है:

 Room(Room &obj) ( length = obj.length; height = obj.height; )

ध्यान दें कि इस निर्माता के पैरामीटर में Wallकक्षा की एक वस्तु का पता है ।

हम तब पहली वस्तु के चर के मान को दूसरे वस्तु के संगत चर के लिए निर्दिष्ट करते हैं। इस तरह से ऑब्जेक्ट की सामग्री की नकल की जाती है।

इसके बाद main(), हम फिर दो ऑब्जेक्ट्स वॉल 1 और वॉल 2 बनाते हैं और फिर कोड के साथ पहले ऑब्जेक्ट की सामग्री को दूसरे में कॉपी करते हैं

 Wall wall2 = wall1;

नोट : एक निर्माता मुख्य रूप से वस्तुओं को इनिशियलाइज़ करने के लिए उपयोग किया जाता है। जब कोई ऑब्जेक्ट बनाया जाता है तो उनका उपयोग डिफ़ॉल्ट कोड चलाने के लिए भी किया जाता है।

दिलचस्प लेख...