'); }
'); }
일반적인 함수를 구현할 때
참조형 반환타입을 선언하게 되면
compiler는 warning을 발생시킨다.
local var를 참조했기 때문이다.
실행시 문제가 되지 않는다 하더라도 언제 문제가 생길지 모를 일이다.
operator = 을 재구현 할 때에도 마찬가지이다.
data & operator + (type 어쩌고) 이런 식이 되면 warning이 발생한다.
하지만 operator = (type &)을 선언해주고 나면 이 문제가 해결이 된다.
해당 객체를 대입할 때 대입연산자인 operator = 을 사용해서 대입이 되면 참조 문제가 해결이 된다.
cf.
참조 반환타입을 사용하는 이유는
실제 asm코드로 변환해서 살펴보았을 때
callee함수가 반환시에 data형을 2번 객체생성을 해서 복사하는 것을 볼 수 있다.(강의 내용중에 있었음)
이 때 실행시간의 load가 걸리고 이것을 방지하기 위해 pointer를 사용하면 이런 객체 복사가 이루어 지지않음
하지만 local var를 대입할 경우 함수 영역이 사라지고 나면 compiler에 local var의 포인터는 관리가 되지 않아
소멸 될 수 있기 때문에 위험성이 있다. 그래서 일반적인 경우는 반환타입을 사용할 수 없다.
책에서 480 쪽에 비슷한 내용이 있는 것 같음
'Tech & IT > 프로그래밍' 카테고리의 다른 글
Macro함수를 이용한 structure list 관리 효율화 (0) | 2009.12.10 |
---|---|
Deassembly 로 asm코드 확인하는 방법 (0) | 2009.12.10 |
C++과 C가 섞여있을 경우 C 함수를 위해 extern "C" 사용 (0) | 2009.12.10 |
C에서 C++로 진화하는 단계 밟아보기 (0) | 2009.12.10 |
Layer를 다루는 C프로그래밍으로 단계별 개선 (0) | 2009.12.10 |