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 의 생성자로 초기화 되지않고 그냥 사용될 뿐입니다.
댓글 달기