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

क्या C++ में कॉपी इनिशियलाइज़ेशन और डायरेक्ट इनिशियलाइज़ेशन में कोई अंतर है?

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

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

कॉपी कंस्ट्रक्टर या कॉपी इनिशियलाइज़ेशन (सिंटैक्स)

classname (const classname &obj) {
   // body of constructor
}

प्रत्यक्ष आरंभीकरण या असाइनमेंट ऑपरेटर (सिंटैक्स)

classname Ob1, Ob2;
Ob2 = Ob1;

आइए, कॉपी इनिशियलाइज़ेशन और डायरेक्ट इनिशियलाइज़ेशन के बीच विस्तृत अंतर देखें।

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

  1. सी ++ में नए ऑपरेटर और ऑपरेटर के बीच अंतर?

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

  1. सी ++ में 'स्ट्रक्चर' और 'टाइपिफ़ स्ट्रक्चर' के बीच अंतर?

    C++ में, struct और typedef struct के बीच कोई अंतर नहीं है, क्योंकि C++ में, सभी struct/union/enum/class घोषणाएं इस तरह काम करती हैं जैसे वे परोक्ष रूप से typedef हैं। एड, जब तक नाम उसी नाम के साथ किसी अन्य घोषणा द्वारा छिपाया नहीं जाता है। हालांकि एक सूक्ष्म अंतर है कि टाइपपीफ को आगे घोषित नहीं किया

  1. C++ स्ट्रिंग स्थिरांक और वर्ण स्थिरांक के बीच अंतर

    C++ में, सिंगल कोट्स में एक कैरेक्टर एक कैरेक्टर लिटरल होता है। यह चार प्रकार का है। उदाहरण के लिए, ए ASCII आधारित सिस्टम पर 97 के मान के साथ चार प्रकार का है। दोहरे उद्धरण चिह्नों में एक वर्ण या वर्णों की एक स्ट्रिंग एक स्ट्रिंग अक्षर का प्रतिनिधित्व करती है। यह प्रकार का है const char[] और स्ट्रि