कॉपी इनिशियलाइज़ेशन कॉपी कंस्ट्रक्टर की अवधारणा का उपयोग करके किया जा सकता है। जैसा कि हम जानते हैं कि कंस्ट्रक्टर्स का उपयोग वस्तुओं को इनिशियलाइज़ करने के लिए किया जाता है। हम किसी अन्य ऑब्जेक्ट की कॉपी बनाने के लिए अपना कॉपी कंस्ट्रक्टर बना सकते हैं, या दूसरे शब्दों में, किसी अन्य ऑब्जेक्ट के मूल्य के साथ करंट ऑब्जेक्ट को इनिशियलाइज़ कर सकते हैं। दूसरी ओर, असाइनमेंट ऑपरेशन का उपयोग करके डायरेक्ट इनिशियलाइज़ेशन किया जा सकता है।
इन दो प्रकार के इनिशियलाइज़ेशन के बीच मुख्य अंतर यह है कि कॉपी इनिशियलाइज़ेशन नई ऑब्जेक्ट के लिए एक अलग मेमोरी ब्लॉक बनाता है। लेकिन डायरेक्ट इनिशियलाइज़ेशन नई मेमोरी स्पेस नहीं बनाता है। यह पिछले मेमोरी ब्लॉक को इंगित करने के लिए संदर्भ चर का उपयोग करता है।
कॉपी कंस्ट्रक्टर या कॉपी इनिशियलाइज़ेशन (सिंटैक्स)
classname (const classname &obj) { // body of constructor }
प्रत्यक्ष आरंभीकरण या असाइनमेंट ऑपरेटर (सिंटैक्स)
classname Ob1, Ob2; Ob2 = Ob1;
आइए, कॉपी इनिशियलाइज़ेशन और डायरेक्ट इनिशियलाइज़ेशन के बीच विस्तृत अंतर देखें।
इनिशियलाइज़ेशन कॉपी करें | डायरेक्ट इनिशियलाइज़ेशन |
---|---|
कॉपी इनिशियलाइज़ेशन मूल रूप से एक ओवरलोडेड कंस्ट्रक्टर है | असाइनमेंट ऑपरेटर का उपयोग करके डायरेक्ट इनिशियलाइज़ेशन किया जा सकता है। |
यह पहले से मौजूद ऑब्जेक्ट के साथ नए ऑब्जेक्ट को इनिशियलाइज़ करता है | यह एक वस्तु का मान दूसरी वस्तु को निर्दिष्ट करता है जो दोनों पहले से मौजूद हैं। |
कॉपी इनिशियलाइज़ेशन का उपयोग तब किया जाता है जब किसी मौजूदा ऑब्जेक्ट के साथ कोई नया ऑब्जेक्ट बनाया जाता है | इसका उपयोग तब किया जाता है जब हम मौजूदा ऑब्जेक्ट को नए ऑब्जेक्ट को असाइन करना चाहते हैं। |
दोनों ऑब्जेक्ट अलग-अलग मेमोरी लोकेशन का उपयोग करते हैं। | एक स्मृति स्थान का उपयोग किया जाता है लेकिन विभिन्न संदर्भ चर एक ही स्थान की ओर इशारा कर रहे हैं। |
यदि कक्षा में कोई कॉपी कंस्ट्रक्टर परिभाषित नहीं है, तो कंपाइलर एक प्रदान करता है। | यदि असाइनमेंट ऑपरेटर ओवरलोड नहीं है तो बिटवाइज कॉपी बनाई जाएगी |