static 객체 ???
글쓴이: nayana / 작성시간: 월, 2005/02/28 - 3:17오후
#include <cstdio>
class CTest
{
private :
int m_i;
public :
CTest( int i )
{
m_i = i;
printf( "constructor\n" );
}
~CTest()
{
printf( "destructor\n" );
}
void Print()
{
printf( "i=%d\n", m_i );
}
};
void f( int j )
{
static CTest t( j );
t.Print();
}
int main ( void )
{
printf( "start main()\n" );
f( 1 );
f( 2 );
printf( "end main()\n" );
return 0;
}
객체를 static 으로 하고 실행했을때 결과가 아이러니하게 나오군요? 밑은 결과 입니다.
Quote:
start main()
constructor
i=1
i=1
end main()
destructor
이렇게 나오는 이유가 무엇때문에 그런거죠?
Forums:


static 으로 변수나 객체를 함수 안에 선언하였다면, 딱 한번 최초로
static 으로 변수나 객체를 함수 안에 선언하였다면, 딱 한번 최초로 그 함수가 실행될 때에만 초기화됩니다. 그리고 그 함수를 벗어나도 객체가 파기되지 않습니다. 다음 번에 그 함수를 호출해도 그 객체는 그 상태 그대로 어딘가 남아 있겠죠?
f 함수안에 만들어진 t 객체는 최초로 1의 값으로 초기화되었고 그 다음번 f 함수의 호출에 사용된 2는 t 의 생성자로 초기화 되지않고 그냥 사용될 뿐입니다.
댓글 달기