- case 1 : 기존에 생성된 객체를 이용해서 새로운 객체를 초기화 하는 경우
ex) student p1 = p2; // p1의 메모리 공간 할당(생성자 호출) 및 p2의 값을 복사 하기 위해 복사생성자 호출.
- case 2 : Call-by-value 방식의 함수호출 과정에서 객체를 인자로 전달하는 경우
ex) void func(student temp); func(p2); // temp로 복사되는 순간 p2의 값의 복사를 위해 복사생성자 호출.
- case 3 : 객체를 반환하되, 참조형으로 반환하지 않는 경우
ex) student func(student p1) { return p1; }
// return문이 실행되는 순간 student 객체를 위한 메모리 공간이 할당되고 이 공간에 반환되는 객체 p1의
내용으로 초기화된다.(복사생성자 호출)
※ case 3의 경우 반환을 위해 임시객체(temporary object)가 생성된다. 이 객체는 메모리 공간에 존재하고,
다음 행으로 넘어갈 경우 소멸된다. 하지만 참조자를 통해 참조되는 임시객체의 경우는 바로 소멸되지 않는다.
Reference: http://printf.egloos.com/1776430
'연구' 카테고리의 다른 글
windows 7 usb로 설치하기 (0) | 2012.07.06 |
---|---|
참조변수 (0) | 2012.04.03 |
A Clearer View from Fuzzy Images (1) | 2012.01.27 |
안드로이드 opencv 연동 (0) | 2012.01.08 |
안드로이드 platform key 생성 (2) | 2012.01.03 |