কম্পিউটার

অ্যারের সদস্যরা কি C++ এ গভীরভাবে অনুলিপি করা হয়েছে?


C/C++ এর ক্ষেত্রে, আমরা একই ধরনের অন্য একটি ভেরিয়েবলের জন্য একটি struct (বা শুধুমাত্র C++ তে ক্লাস) ভেরিয়েবল বরাদ্দ করতে পারি। যখন আমরা একটি struct ভেরিয়েবল অন্যকে বরাদ্দ করি, তখন ভেরিয়েবলের সমস্ত সদস্য অন্য struct ভেরিয়েবলে অনুলিপি করা হয়। এই ক্ষেত্রে প্রশ্ন উঠেছে যখন কাঠামোটি একটি অ্যারে নিয়ে গঠিত তখন কী হয়?

এখন, আমাদের অ্যারে সম্পর্কে আলোচনা করতে হবে। উল্লেখ্য প্রধান বিষয় হল যে অ্যারের সদস্যদের অগভীর অনুলিপি হিসাবে অনুলিপি করা হয় না; কম্পাইলার অ্যারে সদস্যদের ক্ষেত্রে স্বয়ংক্রিয়ভাবে ডিপ কপি সম্পন্ন করে। নীচের প্রোগ্রামে, struct পরীক্ষা অ্যারে সদস্য 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

তাই, C++ ক্লাসের ক্ষেত্রে, অ্যারে সদস্যদের জন্য আমাদের নিজস্ব কপি কনস্ট্রাক্টর এবং অ্যাসাইনমেন্ট অপারেটর লিখতে হবে না কারণ ডিফল্ট আচরণ হল অ্যারের জন্য ডিপ কপি।


  1. C++ এ সংখ্যাগরিষ্ঠ উপাদান

  2. C++ স্ট্রিং এর অ্যারে

  3. C++ এ সাজানো হচ্ছে

  4. স্ট্যাটিক C++ ক্লাস সদস্যদের শুরু করা হয় কখন?