C/C++ के मामले में, हम उसी प्रकार के दूसरे वेरिएबल के लिए एक स्ट्रक्चर (या केवल C++ में क्लास) वेरिएबल असाइन करने में सक्षम हो सकते हैं। जिस समय हम एक स्ट्रक्चर वैरिएबल को दूसरे को असाइन करते हैं, वेरिएबल के सभी सदस्यों को दूसरे स्ट्रक्चर वेरिएबल में कॉपी किया जाता है। इस मामले में सवाल उठता है कि क्या होता है जब संरचना में एक सरणी होती है?
अब, हमें सरणियों के बारे में चर्चा करनी है। ध्यान देने वाली मुख्य बात यह है कि सरणी सदस्यों को उथली प्रतिलिपि के रूप में कॉपी नहीं किया जाता है; सरणी सदस्यों के मामले में कंपाइलर स्वचालित रूप से डीप कॉपी को पूरा करता है। नीचे दिए गए कार्यक्रम में, संरचना परीक्षण में सरणी सदस्य str1 [] होता है। जब हम st1 से st2 को असाइन करने में सक्षम होते हैं, तो st2 में सरणी की एक नई प्रति होती है। इसलिए जब हम st1 के str[] को संशोधित या बदलते हैं तो st2 संशोधित या परिवर्तित नहीं होता है।
उदाहरण
# include <iostream> # include <string.h> using namespace std; struct test{ char str1[20]; }; int main(){ struct test st1, st2; strcpy(st1.str1, "Tutorial Point"); st2 = st1; st1.str1[0] = 'X'; st1.str1[1] = 'Y'; /* Because copy was Deep, both arrays are different */ cout<< "st1's str = " << st1.str1 << endl; cout<< "st2's str = " << st2.str1 << endl; return 0; }
आउटपुट
st1's str = XYtorial Point st2's str = Tutorial Point
इसलिए, सी ++ कक्षाओं के मामले में, हमें सरणी सदस्यों के लिए अपना स्वयं का कॉपी कंस्ट्रक्टर और असाइनमेंट ऑपरेटर लिखने की आवश्यकता नहीं है क्योंकि डिफ़ॉल्ट व्यवहार सरणियों के लिए डीप कॉपी है।