কপি কনস্ট্রাক্টর (Copy Constructor) এবং অ্যাসাইনমেন্ট অপারেটর (Assignment Operator) এক অবজেক্টকে অন্য অবজেক্ট দিয়ে ইনিশিয়ালাইজ করতে ব্যবহৃত হয়। মুখ্য পার্থক্য হলো কপি কনস্ট্রাক্টর নতুন অবজেক্টের জন্য আলাদা মেমরি ব্লক তৈরি করে। কিন্তু অ্যাসাইনমেন্ট অপারেটর নতুন মেমরি স্পেস তৈরি করে না। এটি রেফারেন্স ভেরিয়েবল ব্যবহার করে আগের মেমরি ব্লককে পয়েন্ট করে।
কপি কনস্ট্রাক্টর (সিনট্যাক্স)
classname (const classname &obj) { // কনস্ট্রাক্টর বডি }
অ্যাসাইনমেন্ট অপারেটর (সিনট্যাক্স)
classname Ob1, Ob2; Ob2 = Ob1;
আসুন কপি কনস্ট্রাক্টর এবং অ্যাসাইনমেন্ট অপারেটরের বিস্তারিত পার্থক্য দেখি।
| কপি কনস্ট্রাক্টর | অ্যাসাইনমেন্ট অপারেটর |
|---|---|
| কপি কনস্ট্রাক্টর মূলত একটি ওভারলোডেড কনস্ট্রাক্টর | অ্যাসাইনমেন্ট অপারেটর মূলত একটি অপারেটর |
| এটি একটি ইতিমধ্যে বিদ্যমান অবজেক্ট দিয়ে নতুন অবজেক্ট ইনিশিয়ালাইজ করে | এটি ইতিমধ্যে বিদ্যমান দুটি অবজেক্টের মধ্যে একটার মান অন্য টিতে অ্যাসাইন করে |
| কপি কনস্ট্রাক্টর ব্যবহৃত হয় যখন কোনো বিদ্যমান অবজেক্ট দিয়ে নতুন অবজেক্ট তৈরি হয় | এই অপারেটর ব্যবহৃত হয় যখন আমরা বিদ্যমান অবজেক্টকে নতুন অবজেক্টে অ্যাসাইন করতে চাই |
| দুই অবজেক্ট আলাদা মেমরি লোকেশন ব্যবহার করে | একই মেমরি লোকেশন ব্যবহার করে কিন্তু আলাদা রেফারেন্স ভেরিয়েবল সেটকে পয়েন্ট করে |
| যদি ক্লাসে কপি কনস্ট্রাক্টর ডিফাইন না থাকে, কম্পাইলার একটি প্রদান করে | যদি অ্যাসাইনমেন্ট অপারেটর ওভারলোড না থাকে তবে বিটওয়াইজ কপি হয় |