복사 생성자
복사 생성자는 어떤 객체를 새로 생성되는 객체에 복사하는데 사용된다.
복사 생성자는 일반적인 대입에 사용되는 것이 아니라 값 전달에 의한 함수 매개변수 전달을 포함한 초기화 작업에 사용된다.
클래스의 복사 생성자의 일반적인 원형
Class_name(const Class_name &);
복사 생성자는 언제 사용되는가?
새로운 객체가 생성되어 같은 종류의 기존의 객체로 초기화될 때마다 호출된다. 새로운 객체를 기존의 객체로 명시적으로 초기화할 때 생성되곤 한다. 다음과 같은 상황에서 복사 생성자는 사용된다.
Class_name banana(apple);
Class_name berry = nono;
Class_name bus = Class_name(taxi);
Class_name * market = new Class_name(nono);
- 디폴트 복사 생성자는 static 멤버를 제외한 멤버들을 멤버별로 복사한다. 각 멤버는 값으로 복사된다.
클래스가 새로운 객체가 생성될 때마다 값이 변하는 static 데이터 멤버를 가지고 있다면, 그 상황을 처리하는 명시적 복사 생성자를 제공해야 된다.
- 클래스가 new에 의해 초기화되는 포인터들을 멤버로 가지고 있을 경우에, 포인터 자체를 복사하는 것이 아니라 그 포인터가 지시하는 데이터를 복사하는 복사 생성자를 정의해야 한다. 이것을 깊은 복사라고 한다.
- 얇은 복사는 포인터의 값만을 복사한다.
'C++ > Basic' 카테고리의 다른 글
[C++] 멤버 초기자 리스트 (0) | 2021.07.04 |
---|---|
[C++] 대입 생성자 (0) | 2021.06.30 |
[C++] 클래스의 데이터형 변환 (0) | 2021.06.25 |
[C++] 연산자 오버로딩과 프렌드 (0) | 2021.06.24 |
[C++] 열거체 (0) | 2021.06.21 |