c++ 코드...
글쓴이: jee89 / 작성시간: 수, 2003/04/16 - 12:14오전
#include <iostream> class CBase { int count; public: CBase(int i = 0 ):count(i) {} ~CBase() { cout << "Destructor" << endl;} }; CBase func( CBase base ) { return CBase; } int main() { CBase obj; func( obj ); }
이상을 레드햇리눅스에서 실행하면
Destructor 가 4번이 찍힙니다.
그런데, 유닉스에서 실행하면 3번이 찍힙니다.
왜 리눅스에서는 4번이 찍힐까요?
obj의 destructor가 한번
func내의 base 의 destructor가 한번
main의 func( obj ) 호출종료후 func내의 return 에 의해 생성된
temporary object 의 destructor가 한번
이렇게 3번이 맞는것같은데 리눅스에서 4번이 찍히는 이유가 뭘까요?
gcc 2.96
Forums:
gcc 2.96에서는 정말 네 번 찍히네요.잘은 모르겠지만... fu
gcc 2.96에서는 정말 네 번 찍히네요.
잘은 모르겠지만... func내의 return 구문에서 생성한
temporary object 를 반환할 때 함수의 리턴형이 CBase인 관계로
한번 더 오브젝트가 생성된 게 아닌가 싶네요.
gcc 3.x에서 테스트해 봤는데....
이 경우에는 3번만 출력됩니다.
참고 하세요.
어찌나 졸린지..~~
댓글 달기