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번만 출력됩니다.
참고 하세요.
어찌나 졸린지..~~
댓글 달기