1. 객체의 복사
1-2. 얕은 복사와 깊은 복사
• 얕은 복사(shallow copy)
• 객체의 멤버 변수에 동적 메모리가 할당된 경우
• 사본은 원본 객체가 할당 받은 메모리를 공유하는 문제 발생
• 객체를 소멸시킬 때, 잘못된 메모리 접근 발생 가능
• 깊은 복사(deep copy)
• 객체의 멤버 변수에 동적 메모리가 할당된 경우
• 사본은 원본이 가진 메모리 크기 만큼 별도로 동적 할당
• 원본의 동적 메모리에 있는 내용을 사본에 복사
• 완전한 형태의 복사
• 사본과 원본은 메모리를 공유하는 문제 없음
• 직접 생성자를 정의 해야함
1-3. 복사 생성자
• 객체의 복사 생성시 호출되는 특별한 생성자
• 특징
• 한 클래스에 오직 한 개만 선언 가능
• 복사 생성자는 보통 생성자와 클래스 내에 중복 선언 가능
• 클래스에 대한 참조 매개 변수를 가지는 독특한 생성자
• 복사 생성자 선언
1-4. 객체의 복사 과정
1-5. 디폴트 복사 생성자
• 복사 생성자가 선언되어 있지 않는 클래스
• 컴파일러는 자동으로 디폴트 복사 생성자 삽입
1-6. 묵시적 복사
• 객체로 초기화하여 객체가 생성될 때 복사 생성자가 자동으로 호출
• ‘값에 의한 호출’로 객체가 전달되면, 함수의 매개 변수 객체가 생성될 때 복사 생성자가 자동으로 호출
• 함수가 객체를 반환할 때, return 문은 반환하는 객체의 복사본을 생성하여 호출한 곳으로 전달
2. 정적 멤버
• 클래스의 모든 객체가 공유하는 멤버로, static 키워드를 이용하여 사용
• 객체의 수를 카운트 하는 용도 등으로 많이 사용됨
• 정적 멤버 함수는 객체가 생성되지 않은 상태에서 호출 됨
• 정적 변수와 지역 변수만 사용 가능
• this 포인터 사용 불가능
• singleton 패턴을 이용한 설계 방식에 사용