C++
복사 생성자(copy constructor)
HJdone
2019. 6. 12. 00:52
복사에는 얕은 복사와 깊은 복사가 있는데 그 두가지의 특징에 대해 살펴보도록 하겠다.
얕은복사
- 값만 복사하는 복사 형태
- 포인터 등을 복사 시 같은 주소를 참조하기 때문에, 값 변경, 동적 해제 등에서 문제가 발생한다.
깊은 복사
- 주소가 가리키는 값, 즉, 그 메모리의 값을 복사하는 복사 형태.
- 포인터 등을 복사 시 한 주소를 참조하지 않고, 새로 주소를 할당받은 후 참조하기 때문에, 문제가 발생하지 않는다.
복사 생성자란?
기본 복사 생성자
1.기본적으로 제공되는 생성자 중 하나
2.객체간의 변수의 값을 복사 해 준다.
3.호출시키는 객체의 선언과 동시에 초기화 할 때 발생한다.
복사 생성자의 호출 시점
1.객체의 선언과 동시에 초기화 될 때
2.함수에 매개변수로 객체를 전달할 때(call by value 에서 일어난다.)
3.반환값으로 객체를 반활 할 때