यहां हम देखेंगे कि कंस्ट्रक्टर प्रतिनिधिमंडल क्या है? जब एक कंस्ट्रक्टर उसी क्लास के दूसरे कंस्ट्रक्टर को कॉल करता है, तो इसे कंस्ट्रक्टर डेलिगेशन कहा जाता है। यह सुविधा 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