কম্পিউটার টিউটোরিয়াল

C++-এ কপি কনস্ট্রাক্টর


কপি কনস্ট্রাক্টর হলো কনস্ট্রাক্টরের একটি প্রকার। এটি একটি অবজেক্ট তৈরি করে এবং সেটিকে একই ক্লাসের একটি অবজেক্ট দিয়ে ইনিশিয়ালাইজ করে। যদি ক্লাসে কপি কনস্ট্রাক্টর সংজ্ঞায়িত না থাকে, তবে কম্পাইলার নিজে একটা সংজ্ঞায়িত করে। পয়েন্টার ভেরিয়েবল বা ডাইনামিক মেমোরি এলোকেশন থাকা ক্লাসের জন্য কপি কনস্ট্রাক্টর আবশ্যক।

কপি কনস্ট্রাক্টর প্রদর্শন করে এমন একটি প্রোগ্রাম নিচে দেওয়া হলো:

উদাহরণ

#include <iostream>
using namespace std;

class Demo {
private:
    int num1, num2;
public:
    Demo(int n1, int n2) {
        num1 = n1;
        num2 = n2;
    }
    Demo(const Demo &n) {
        num1 = n.num1;
        num2 = n.num2;
    }
    void display() {
        cout << "num1 = " << num1 << endl;
        cout << "num2 = " << num2 << endl;
    }
};

int main() {
    Demo obj1(10, 20);
    Demo obj2 = obj1;
    obj1.display();
    obj2.display();
    return 0;
}

আউটপুট

num1 = 10
num2 = 20
num1 = 10
num2 = 20

উপরোক্ত প্রোগ্রামে, Demo ক্লাসে একটি সাধারণ প্যারামিটারাইজড কনস্ট্রাক্টর এবং একটি কপি কনস্ট্রাক্টর রয়েছে। এছাড়া num1 এবং num2-এর মান প্রদর্শন করার একটি ফাংশন রয়েছে। এগুলো নিচে দেওয়া হলো:

class Demo {
private:
    int num1, num2;
public:
    Demo(int n1, int n2) {
        num1 = n1;
        num2 = n2;
    }
    Demo(const Demo &n) {
        num1 = n.num1;
        num2 = n.num2;
    }
    void display() {
        cout << "num1 = " << num1 << endl;
        cout << "num2 = " << num2 << endl;
    }
};

main() ফাংশনে, ক্লাস অবজেক্ট obj1 প্যারামিটারাইজড কনস্ট্রাক্টর দিয়ে ইনিশিয়ালাইজ করা হয়েছে। অবজেক্ট obj2 কপি কনস্ট্রাক্টর দিয়ে ইনিশিয়ালাইজ করা হয়েছে এবং obj1-এর মানগুলো obj2-এ কপি করা হয়েছে। অবশেষে obj1 এবং obj2-এর মানগুলো প্রদর্শন করা হয়েছে। এটি নিচে দেওয়া হলো:

Demo obj1(10, 20);
Demo obj2 = obj1;
obj1.display();
obj2.display();

  1. C++ ডিফল্ট কনস্ট্রাক্টর (Default Constructor)

  2. C++-এ কপি কনস্ট্রাক্টর বনাম অ্যাসাইনমেন্ট অপারেটর

  3. C++-এ ডিস্ট্রাক্টর

  4. C++-এ কনস্ট্রাক্টর