यहां हम देखेंगे कि कंस्ट्रक्टर डेलीगेशन क्या है? जब एक कंस्ट्रक्टर उसी क्लास के दूसरे कंस्ट्रक्टर को कॉल करता है, तो इसे कंस्ट्रक्टर डेलीगेशन कहा जाता है। यह सुविधा C++11 से मौजूद है।
आइए निम्नलिखित प्रोग्राम देखें, और विश्लेषण करने का प्रयास करें कि इस कोड में क्या कठिनाइयां हैं।
उदाहरण
#include <iostream> using namespace std; class MyClass { int a, b, c; public: MyClass(){ a = b = c = 0; } MyClass(int c) { // a और b को इनिशियलाइज़ करना रिडंडेंट है, केवल c इनिशियलाइज़ेशन की आवश्यकता है यहां 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(){ //कंस्ट्रक्टर डेलीगेशन का उपयोग 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