데모 목적으로이 클래스 고려해질문에 대한) (클래스 인스턴스를 삭제하고 정적 메소드/변수는
class test{
private:
int y;
HANDLE handle;
static int x;
public:
test()
int add();
static int sub();
}
test::test() {
[....]
sub = 1;
handle = (HANDLE)_beginthreadex(NULL,0,&test::sub,NULL,0,0);
}
test::sub() {
[....]
_endthreadex(0)
}
을 내가 정적 메서드/변수에 대한 약간의 확신 그리고 난 지금 몇 가지 질문이있다;
1) test 클래스 인스턴스를 만든 다음 delete test를 호출하면 정적 변수도 정리됩니까? 그렇지 않으면 delete()를 사용하여 소멸자에서 모든 정적 변수를 수동으로 정리해야합니까 (아니면 free()입니까)?
2) thread가 실행 중일 때 _endthreadex로 끝날 때 정적 메소드에서 수행 할 수동 정리가 있습니까? 보시다시피 handle 변수가 스레드를 참조하고 있습니다.
미리 감사드립니다.
정적 변수를 클래스에있는 전역 변수로 생각하는 것이 도움이 될 수 있습니다. –
@Michael - 나는 그런 식으로 생각 했었습니다. 그렇다면 수명이 아니라 범위를 지칭하는 전역이 정적 변수가 개인이 될 수 있음을 깨달았습니다. 전역 변수는 고정되어 있기 때문에 (정적 변수는 함수 나 파일에 국한 될 수 있기 때문에) 정적 변수라고 할 수 있습니다. –
마음에 들지 않는 또 다른 한가지 : test() 인스턴스를 삭제하면 'handle'에 대해 CloseHandle()을 호출해야합니까, 아니면 인스턴스의 delete() 중에 자동으로 정리할 수 있습니까? – KaiserJohaan