কম্পিউটার

কপি ইনিশিয়ালাইজেশন এবং সি++ এ ডাইরেক্ট ইনিশিয়ালাইজেশনের মধ্যে কোন পার্থক্য আছে কি?


কপি কনস্ট্রাক্টরের ধারণা ব্যবহার করে কপি ইনিশিয়ালাইজেশন করা যেতে পারে। আমরা জানি যে কনস্ট্রাক্টরগুলি অবজেক্ট শুরু করতে ব্যবহৃত হয়। আমরা আমাদের কপি কনস্ট্রাক্টর তৈরি করতে পারি অন্য কোনো অবজেক্টের কপি তৈরি করতে, বা অন্য কথায়, অন্য অবজেক্টের মান দিয়ে কারেন্ট অবজেক্ট শুরু করতে পারি। অন্যদিকে, অ্যাসাইনমেন্ট অপারেশন ব্যবহার করে সরাসরি শুরু করা যেতে পারে।

এই দুই ধরনের ইনিশিয়ালাইজেশনের মধ্যে প্রধান পার্থক্য হল কপি ইনিশিয়ালাইজেশন নতুন অবজেক্টের জন্য আলাদা মেমরি ব্লক তৈরি করে। কিন্তু সরাসরি সূচনা নতুন মেমরি স্থান না. এটি পূর্ববর্তী মেমরি ব্লক নির্দেশ করতে রেফারেন্স ভেরিয়েবল ব্যবহার করে।

কপি কনস্ট্রাক্টর বা কপি ইনিশিয়ালাইজেশন (সিনট্যাক্স)

classname (const classname &obj) {
   // body of constructor
}

ডাইরেক্ট ইনিশিয়ালাইজেশন বা অ্যাসাইনমেন্ট অপারেটর (সিনট্যাক্স)

classname Ob1, Ob2;
Ob2 = Ob1;

আসুন আমরা অনুলিপি আরম্ভ এবং সরাসরি শুরুর মধ্যে বিস্তারিত পার্থক্য দেখি।

সূচনা অনুলিপি করুন সরাসরি সূচনা
কপি ইনিশিয়ালাইজেশন মূলত একটি ওভারলোড কনস্ট্রাক্টর অ্যাসাইনমেন্ট অপারেটর ব্যবহার করে সরাসরি শুরু করা যেতে পারে।
এটি ইতিমধ্যে বিদ্যমান বস্তুর সাথে নতুন অবজেক্টকে শুরু করে এটি একটি বস্তুর মান অন্য বস্তুর জন্য নির্ধারণ করে যে দুটিই ইতিমধ্যে বিদ্যমান।
এটি ব্যবহার করা হয় যখন আমরা বিদ্যমান অবজেক্টকে নতুন অবজেক্টে বরাদ্দ করতে চাই।
উভয় বস্তুই পৃথক মেমরি অবস্থান ব্যবহার করে। একটি মেমরি অবস্থান ব্যবহার করা হয় কিন্তু বিভিন্ন রেফারেন্স ভেরিয়েবল একই অবস্থানের দিকে নির্দেশ করছে।
কোন কপি কনস্ট্রাক্টর ক্লাসে সংজ্ঞায়িত না থাকলে, কম্পাইলার একটি প্রদান করে। অ্যাসাইনমেন্ট অপারেটর ওভারলোড না হলে বিটওয়াইজ কপি করা হবে

  1. C++ প্রোগ্রামে 'struct' এবং 'typedef struct' এর মধ্যে পার্থক্য?

  2. C++ এ নতুন অপারেটর এবং নতুন অপারেটরের মধ্যে পার্থক্য?

  3. C++ এ 'struct' এবং 'typedef struct' এর মধ্যে পার্থক্য?

  4. C++ স্ট্রিং ধ্রুবক এবং অক্ষর ধ্রুবকের মধ্যে পার্থক্য