standwally

복사 생성자 본문

프로그래밍/OOP

복사 생성자

standwally 2013. 2. 19. 21:52
  자기 자신과 같은 형태의 객체를 인자로 받을 수 있는 생성자를 가리켜 "복사 생성자"라고 한다. 그리고 자동으로 삽입되는 복사 생성자를 가리켜 "디폴트 복사 생성자"라 한다.
  • 얕은 복사(shallow copy) : 디폴트 복사 생성자를 통한 객체 생성시, 인자로 넘겨받은 객체의 주소 값만을 복사함. 
  • 깊은 복사(deep copy) : 개발자가 임의로 디폴트 복사 생성자를 재정의하여, 멤버 변수를 새롭게 동적할당하게끔 함. 

복사 생성자가 호출되는 시점은 다음과 같이 세 가지 형태로 분류할 수 있다.
  1. 기존에 생성된 객체가 새로운 객체를 초기화하는 경우
  2. 함수 호출 시 객체를 값에 의해 전달하는 경우(매개 변수로 생성되는 객체의 복사 생성자가 호출되는 것임)
  3. 함수 내에서 객체를 값에 의해 리턴하는 경우