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

C++ में असाइनमेंट ऑपरेटर और कॉपी कंस्ट्रक्टर में क्या अंतर है?


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

कॉपी कंस्ट्रक्टर (सिंटैक्स)

classname (const classname &obj) { // कंस्ट्रक्टर का शरीर }

असाइनमेंट ऑपरेटर (सिंटैक्स)

classname Ob1, Ob2; Ob2 = Ob1;

आइए कॉपी कंस्ट्रक्टर और असाइनमेंट ऑपरेटर के बीच विस्तृत अंतर देखें।


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

 

 


  1. - C++ में ++i और i++ में क्या अंतर है?

    ++ के सफ़िक्स और प्रीफिक्स संस्करणों के बीच एक बड़ा अंतर है। प्रीफिक्स संस्करण में (यानी, ++i), i का मान बढ़ाया जाता है, और एक्सप्रेशन का मान i का नया मान होता है। तो मूल रूप से यह पहले इन्क्रीमेंट करता है फिर एक्सप्रेशन को मान असाइन करता है। पोस्टफिक्स संस्करण में (यानी, i++), i का मान बढ़ाया जात

  1. - C++ में डॉट (.) ऑपरेटर और -> में क्या अंतर है?

    डॉट और एरो ऑपरेटर दोनों का उपयोग C++ में क्लास के मेंबर्स को एक्सेस करने के लिए किया जाता है। वे केवल अलग-अलग परिदृश्यों में उपयोग किए जाते हैं। C++ में, क्लास, स्ट्रक्चर, या यूनियन के रूप में घोषित प्रकारों को क्लास टाइप का माना जाता है। इसलिए निम्नलिखित उन सभी तीनों को संदर्भित करता है। a.b केवल

  1. - Python में = और == ऑपरेटर्स में क्या अंतर है?

    Python में `=` सिंबल को असाइनमेंट ऑपरेटर के रूप में परिभाषित किया गया है। इसके बाईं ओर एक वेरिएबल और दाईं ओर एक एक्सप्रेशन की आवश्यकता होती है। दाईं ओर के एक्सप्रेशन का मान बाईं ओर के वेरिएबल को असाइन किया जाता है। एक्सप्रेशन और वेरिएबल का नाम परस्पर विनिमेय नहीं हैं। >>> a = 10 >>&g