[C/C++] static variable in a function

그림자왕국·2020년 10월 9일
0

C++

목록 보기
10/24
post-thumbnail

static variable

스태틱 변수는 메모리 구조에서 스태틱 영역에 할당이 되는 데이터다.

스태틱 변수는 전역(클래스), 함수의 지역변수로 선언할 수 있다.

스태틱을 전역(클래스) 변수로 선언할 경우 프로세스가 시작될 때 스태틱 영역에 할당(초기화)된다.

class ABC {
	static int sta;
};

main(){ // sta가 static 영역에 초기화됨
ABC::sta = 10;
}

함수 내의 static variable

스태틱 변수를 특정 함수 내에 선언할 수 있다. 이럴 경우 변수 초기화 시점이 달라지는데

프로세스가 시작될 때가 아닌 함수가 처음 호출될 때 변수가 스태틱 영역에 초기화된다.

class STC {
	void func(){
    		static int mta;
    }
};

STC::func(); // 함수가 호출되어야지 mta가 초기화됨

정리

static 멤버 함수는 자신의 오브젝트를 가리킬 수 있는 this 정보가 없기 때문에
static 함수 안에 일반 멤버 변수가 들어갈 수 없다. (스태틱 멤버 변수만 접근 가능하다.)

static variable은 프로세스가 시작될 때 스태틱 영역에 초기화된다.

멤버 함수 안의 static variable은 해당 함수가 처음 호출될 때 스태틱 영역에 초기화딘다.

profile
언리얼 엔진 매니아입니다.

0개의 댓글