윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자
윤성우의 열혈 C++ 프로그래밍 Chapter 05-1. '복사 생성자'와의 첫 만남
C++ 스타일의 초기화 윤성우의 열혈 C++ 프로그래밍 C 스타일 초기화 C++ 스타일 초기화 이렇듯, 다음 두 문장은 실제로 동일한 문장으로 해석된다. SoSimple sim2=sim1; SoSimple sim2(sim1); 대입연산의 의미처럼 실제 멤버 대 멤버의 복사가 일어난다!
SoSimple sim2(sim1); 윤성우의 열혈 C++ 프로그래밍 실행결과 SoSimple sim2(sim1)의 해석! SoSimple sim2=sim1 은 묵시적으로 SoSimple sim2(sim1) 으로 해석이 된다. 실행결과
자동으로 삽입이 되는 디폴트 복사 생성자 윤성우의 열혈 C++ 프로그래밍 복사 생성자를 정의하지 않으면, 멤버 대 멤버의 복사를 진행하는 디폴트 복사 생성자가 삽입된다.
키워드 explicit 윤성우의 열혈 C++ 프로그래밍 AAA 생성자를 explicit로 선언하면 AAA obj=3 과 같은 형태로 객체 생성 불가!
Chapter 05-2. ‘깊은 복사’와 ‘얕은 복사’ 윤성우의 열혈 C++ 프로그래밍 Chapter 05-2. ‘깊은 복사’와 ‘얕은 복사’ 윤성우 저 열혈강의 C++ 프로그래밍 개정판
디폴트 복사 생성자의 문제점 윤성우의 열혈 C++ 프로그래밍 실행결과 객체 소멸 시 문제가 되는 구조!!! 얕은 복사!
‘깊은 복사’를 위한 복사 생성자의 정의 윤성우의 열혈 C++ 프로그래밍 깊은 복사를 구성하는 복사 생성자!!!
윤성우의 열혈 C++ 프로그래밍 Chapter 05-3. 복사 생성자의 호출시점 윤성우 저 열혈강의 C++ 프로그래밍 개정판
복사 생성자가 호출되는 시점 윤성우의 열혈 C++ 프로그래밍 인자 전달 시 선언과 동시에 초기화 반환 시 메모리 메모리 공간의 할당과 초기화가 동시에 일어나는 상황 case 1 인자 전달 시 선언과 동시에 초기화 case 2 & case 3 반환 시 메모리 공간 할당과 동시에 초기화
복사 생성자의 호출 case의 확인1 윤성우의 열혈 C++ 프로그래밍 실행결과
복사 생성자의 호출 case의 확인2 윤성우의 열혈 C++ 프로그래밍 실행결과 인자 전달에 의한 복사 생성자 호출 반환에 의한
반환할 때 만들어진 객체의 소멸 시점 윤성우의 열혈 C++ 프로그래밍 참조값이 반환되므로 참조자로 참조 가능! 실행결과
Chapter 05가 끝났습니다. 질문 있으신지요?