스태틱 변수는 메모리 구조에서 스태틱 영역에 할당이 되는 데이터다.
스태틱 변수는 전역(클래스), 함수의 지역변수로 선언할 수 있다.
스태틱을 전역(클래스) 변수로 선언할 경우 프로세스가 시작될 때 스태틱 영역에 할당(초기화)된다.
class ABC {
static int sta;
};
main(){ // sta가 static 영역에 초기화됨
ABC::sta = 10;
}
스태틱 변수를 특정 함수 내에 선언할 수 있다. 이럴 경우 변수 초기화 시점이 달라지는데
프로세스가 시작될 때가 아닌 함수가 처음 호출될 때 변수가 스태틱 영역에 초기화된다.
class STC {
void func(){
static int mta;
}
};
STC::func(); // 함수가 호출되어야지 mta가 초기화됨
static 멤버 함수는 자신의 오브젝트를 가리킬 수 있는 this 정보가 없기 때문에
static 함수 안에 일반 멤버 변수가 들어갈 수 없다. (스태틱 멤버 변수만 접근 가능하다.)
static variable은 프로세스가 시작될 때 스태틱 영역에 초기화된다.
멤버 함수 안의 static variable은 해당 함수가 처음 호출될 때 스태틱 영역에 초기화딘다.