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

위의 프로그램에서 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();