C++

복사 생성자(copy constructor)

HJdone 2019. 6. 12. 00:52

복사에는 얕은 복사와 깊은 복사가 있는데 그 두가지의 특징에 대해 살펴보도록 하겠다.

 

얕은복사

  • 값만 복사하는 복사 형태
  • 포인터 등을 복사 시 같은 주소를 참조하기 때문에, 값 변경, 동적 해제 등에서 문제가 발생한다.

깊은 복사

  • 주소가 가리키는 값,  즉, 그 메모리의 값을 복사하는 복사 형태.
  • 포인터 등을 복사 시 한 주소를 참조하지 않고, 새로 주소를 할당받은 후 참조하기 때문에, 문제가 발생하지 않는다.

 

복사 생성자란?

기본 복사 생성자

1.기본적으로 제공되는 생성자 중 하나

2.객체간의 변수의 값을 복사 해 준다.

3.호출시키는 객체의 선언과 동시에 초기화 할 때 발생한다.

 

복사 생성자의 호출 시점

1.객체의 선언과 동시에 초기화 될 때

2.함수에 매개변수로 객체를 전달할 때(call by value 에서 일어난다.)

3.반환값으로 객체를 반활 할 때