Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

คัดลอกตัวสร้างใน 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

ในโปรแกรมข้างต้น คลาสสาธิตประกอบด้วยคอนสตรัคเตอร์แบบกำหนดพารามิเตอร์ปกติและคอนสตรัคเตอร์คัดลอก นอกจากนี้ ยังมีฟังก์ชันที่แสดงค่าของ 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();