본문 바로가기

연구

# 복사생성자의 호출시점



- 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