C ++ में कॉपी कंस्ट्रक्टर कैसे लागू करें?



कंस्ट्रक्टर्स को समझना कई लोगों के लिए एक पहेली रहा है। यह लेख आपको C ++ में कॉपी कंस्ट्रक्टर की अवधारणा को ध्वस्त करने में मदद करेगा

समझ कंस्ट्रक्टर कई लोगों के लिए एक पहेली रही है। यह लेख आपको C ++ में कॉपी कंस्ट्रक्टर की अवधारणा को ध्वस्त करने में मदद करेगा। इस लेख में निम्नलिखित बिंदुओं को शामिल किया जाएगा,

तो चलिए शुरू करते हैंC ++ में कॉपी कंस्ट्रक्टर के इस लेख के साथ





एक कॉपी कंस्ट्रक्टर एक कन्स्ट्रक्टर है जो एक क्लास के ऑब्जेक्ट को उसी क्लास के दूसरे ऑब्जेक्ट का उपयोग करके इनिशियलाइज़ करता है।

वाक्य - विन्यास:



हमारे पास कीवर्ड कास्ट है क्योंकि हम मूल्य को स्थिर बनाना चाहते हैं और यह सुनिश्चित करते हैं कि यह कोड में कहीं संशोधित नहीं है। डिफ़ॉल्ट कंस्ट्रक्टर की तरह, कंपाइलर द्वारा एक कॉपी कंस्ट्रक्टर भी प्रदान किया जाता है। इसे Default Copy Constructor कहा जाता है। कॉपी कंस्ट्रक्टरों को निजी बनाया जा सकता है। जब हम कॉपी कंस्ट्रक्टर को निजी बनाते हैं तो हम कक्षा की वस्तुओं की नकल नहीं कर सकते।

यहाँ एक उदाहरण कोड है :

बाइनरी को जावा में दशमलव में परिवर्तित करना
# नामस्थान std वर्ग परीक्षण {निजी: int x public: test (int X1) {x = X1} परीक्षण (कॉन्स्ट टेस्ट और t2) {x = t2.x} int getX () {रिटर्न x}} मुख्य () का उपयोग कर निकालें {टेस्ट t1 (7) // सामान्य कंस्ट्रक्टर को यहां टेस्ट t2 = t1 // कॉपी कंस्ट्रक्टर कहा जाता है<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

आउटपुट:



C ++ में आउटपुट-कॉपी कंस्ट्रक्टर - एडुर्का

स्पष्टीकरण

उपरोक्त कार्यक्रम एक प्रतिलिपि निर्माता का एक मूल डेमो है। हमारे पास एक वर्ग परीक्षण है, जिसमें एक निजी डेटा सदस्य प्रकार x है। फिर हमारे पास एक पैरामीटराइज्ड कंस्ट्रक्टर है, जो वेरिएबल x को 7 असाइन करता है। हमारे पास एक कॉपी कंस्ट्रक्टर है, जो t1 के मूल्य के साथ t2 के मूल्य को तत्काल बताता है। T2 का पता भेजा जाता है जो t1 का मान रखता है और x को असाइन किया जाता है। वहाँ एक फ़ंक्शन प्राप्त होता है जो x का मान लौटाता है।

मुख्य कार्य में वर्ग परीक्षण की एक वस्तु है जिसे t1 कहा जाता है। इस ऑब्जेक्ट के साथ एक मूल्य जुड़ा हुआ है, यह एक पैरामीटर है। मुख्य कार्य में वर्ग परीक्षण का एक और उद्देश्य है जिसे t2 कहा जाता है। इसे t1 वैरिएबल का उपयोग करके आरंभीकृत किया जाता है और कॉपी कंस्ट्रक्टर को यहां बुलाया जाता है। अंत में, x का मान प्राप्त करने के लिए get फ़ंक्शन को t1 और t2 के संबंध में कहा जाता है।

प्रकार

कॉपी कंस्ट्रक्टर दो प्रकार के होते हैं।
⦁ उथला कॉपी कंस्ट्रक्टर
⦁ डीप कॉपी कंस्ट्रक्टर

C ++ में कॉपी कंस्ट्रक्टर पर इस लेख के साथ आगे बढ़ना

उथला प्रतिलिपि निर्माता:

Shallow Copy Constructor एक Default Copy Constructor है।

उदाहरण:

एक ही समय में दो लोग एक डेटाबेस का उपयोग करते हैं और दो अलग-अलग प्रणालियों के मूल्यों में बदलाव करते हैं। यदि वे डेटाबेस में परिवर्तन करते हैं, तो इन दोनों परिवर्तनों को डेटाबेस में दिखाया जाएगा। दोनों ऑब्जेक्ट्स एक ही मेमोरी लोकेशन की ओर इशारा करेंगे। यह Shallow Copy Constructor है। यह ज्यादातर तब होता है जब हम डिफ़ॉल्ट कॉपी कंस्ट्रक्टर के साथ काम कर रहे होते हैं। यहाँ एक उदाहरण के लिए कोड है: उथला कॉपी निर्माता:

# नामस्थान std वर्ग परीक्षण {public: int y, z test (int y1, int z1) {y = y1 z = z1}} int main () {test a (7,13) cout का उपयोग करके निकालें<<'the sum is: '<< a.y+a.z return 1 } 

आउटपुट:

स्पष्टीकरण:

उपरोक्त कोड में, हम कंपाइलर द्वारा प्रदान की गई डिफ़ॉल्ट कॉपी कंस्ट्रक्टर का उपयोग करते हैं। इसलिए यह एक Shallow Copy Constructor है।

C ++ में कॉपी कंस्ट्रक्टर पर इस लेख के साथ आगे बढ़ना

डीप कॉपी कंस्ट्रक्टर

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

इसके लिए एक उदाहरण कोड है: डीप कॉपी कंस्ट्रक्टर:

# नामस्थान std वर्ग परीक्षण {निजी: int x public: test (int X1) {x = X1} परीक्षण (कॉन्स्ट टेस्ट और t2) {x = t2.x} int getX () {रिटर्न x}} मुख्य () का उपयोग कर निकालें {टेस्ट t1 (7) // सामान्य कंस्ट्रक्टर को यहां टेस्ट t2 = t1 // कॉपी कंस्ट्रक्टर कहा जाता है<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

आउटपुट:

java c पर आधारित है

स्पष्टीकरण

यह समान कोड है जो हमने ऊपर उपयोग किया है, समान आउटपुट दे रहा है। यह एक उपयोगकर्ता है जो कॉपी कंस्ट्रक्टर को परिभाषित करता है और इसलिए यह डीप कॉपी कंस्ट्रक्टर है।

इस प्रकार हम इस लेख के अंत में 'C ++ में कॉपी कंस्ट्रक्टर' पर आए हैं। आप और अधिक जानने के लिए चाहते हैं, तो बाहर की जाँच करें Edureka, एक विश्वसनीय ऑनलाइन शिक्षण कंपनी है। एडुर्का के जावा जे 2 ईई और एसओए प्रशिक्षण और प्रमाणन पाठ्यक्रम आपको हाइबरनेट और स्प्रिंग जैसे विभिन्न जावा फ्रेमवर्क के साथ कोर और उन्नत जावा अवधारणाओं दोनों के लिए प्रशिक्षित करने के लिए डिज़ाइन किया गया है।

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