অ্যাসাইনমেন্টটি 2টি ধাপ নিয়ে গঠিত, একটি বস্তুর পুরানো অবস্থাকে ছিঁড়ে ফেলা এবং এটির জন্য একটি নিউজস্টেট তৈরি করা। প্রথম ধাপের জন্য ডেস্ট্রাক্টর ব্যবহার করা হয় এবং একটি কপি কনস্ট্রাক্টর এই দ্বিতীয় ধাপটি করে।
এই দুটি বাস্তবায়ন করা সোজা। কিন্তু অ্যাসাইনমেন্ট অপারেটরকে ওভারলোড করার সময়, এটি বাস্তবায়ন করা বেশ কঠিন হতে পারে। অনুলিপি এবং swapidiom একই জন্য একটি সমাধান.
এই বাগধারাটি ডেটার একটি স্থানীয় অনুলিপি তৈরি করতে কপি-কন্সট্রাক্টর ব্যবহার করে। তারপরে এটি সোয়াপ ফাংশন ব্যবহার করে পুরানো ডেটাকে নতুন ডেটার সাথে অদলবদল করে। অস্থায়ী অনুলিপি তারপর ধ্বংসকারী ব্যবহার করে ধ্বংস করা হয়. অবশেষে আমাদের কাছে নতুন ডেটার একটি কপি আছে৷
৷সুতরাং, কপি-এন্ড-সোয়াপ বাগধারাটির জন্য তিনটি জিনিস প্রয়োজন
- কপি-কনস্ট্রাক্টর
- কপি-কনস্ট্রাক্টর
- ধ্বংসকারী
- অদলবদল ফাংশন।
একটি সোয়াপ ফাংশন হল একটি নন-থ্রোয়িং ফাংশন যা একটি ক্লাসের দুটি বস্তু, থিমেম্বারকে অদলবদল করে।
দ্রষ্টব্য :আপনি std::swap ফাংশন ব্যবহার করবেন না কারণ এটি অভ্যন্তরীণভাবে অনুলিপি কনস্ট্রাক্টর এবং অ্যাসাইনমেন্ট অপারেটর ব্যবহার করে একই অর্জন করতে।