Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में कंस्ट्रक्टर डेलिगेशन

यहां हम देखेंगे कि कंस्ट्रक्टर प्रतिनिधिमंडल क्या है? जब एक कंस्ट्रक्टर उसी क्लास के दूसरे कंस्ट्रक्टर को कॉल करता है, तो इसे कंस्ट्रक्टर डेलिगेशन कहा जाता है। यह सुविधा C++11 से मौजूद है।

आइए हम निम्नलिखित कार्यक्रम देखें, और विश्लेषण करने का प्रयास करें कि इस कोड में क्या कठिनाइयाँ हैं।

उदाहरण

#include <iostream>
using namespace std;
class MyClass {
   int a, b, c;
   public:
   MyClass(){
      a = b = c = 0;
   }
   MyClass(int c) {
      // Initializing a and b are redundent, only c initialization is needed here
      a = 0;
      b = 0;
      this->c = c;
   }
   void display(){
      cout << "a : " << a << ", b : " << b << ", c : " << c;
   }
};
main() {
   MyClass my_obj(5);
   my_obj.display();
}

आउटपुट

a : 0, b : 0, c : 5

यहां हम देख सकते हैं कि कोड ठीक काम कर रहा है, लेकिन कुछ बेमानी कोड है। गैर-पैरामीटरयुक्त कंस्ट्रक्टर a और b के मानों को 1 पर सेट कर सकता है। इसलिए यदि हम पहले कंस्ट्रक्टर को दूसरे कंस्ट्रक्टर में उपयोग करते हैं, तो यह अधिक प्रभावी होगा। इस कारण से, हमें कंस्ट्रक्टर डेलिगेशन नामक विधि का उपयोग करना होगा।

उदाहरण

#include <iostream>
using namespace std;
class MyClass {
   int a, b, c;
   public:
   MyClass(){
      a = b = c = 0;
   }
   MyClass(int c) : MyClass(){ //using constructor delegation
      this->c = c;
   }
   void display(){
      cout << "a : " << a << ", b : " << b << ", c : " << c;
   }
};
main() {
   MyClass my_obj(5);
   my_obj.display();
}

आउटपुट

a : 0, b : 0, c : 5

  1. सी ++ डिफ़ॉल्ट कंस्ट्रक्टर

    क्लास कंस्ट्रक्टर एक क्लास का एक विशेष सदस्य फंक्शन होता है जिसे जब भी हम उस क्लास के नए ऑब्जेक्ट बनाते हैं तो उसे निष्पादित किया जाता है। एक कंस्ट्रक्टर के पास क्लास के समान ही नाम होगा और इसमें कोई रिटर्न टाइप नहीं है, यहां तक ​​​​कि शून्य भी नहीं है। कुछ सदस्य चर के लिए प्रारंभिक मान सेट करने के

  1. C++ में कंस्ट्रक्टर बनाम असाइनमेंट ऑपरेटर कॉपी करें

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

  1. C++ में कॉपी कंस्ट्रक्टर

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