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) {       // 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

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

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

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

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

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

    कॉपी कंस्ट्रक्टर क्या है? एक प्रकार का कंस्ट्रक्टर जो समान क्लास के मौजूदा ऑब्जेक्ट से नया ऑब्जेक्ट बनाता और आरंभ करता है। यदि परिभाषित न हो तो कंपाइलर डिफॉल्ट कॉपी कंस्ट्रक्टर बनाता है (शैलो कॉपी)। पॉइंटर सदस्यों या डायनामिक मेमोरी वाली क्लास के लिए डीप कॉपी कंस्ट्रक्टर आवश्यक है। सिंटैक्स ClassN