C++

static 키워드

khkg12 2023. 8. 14. 15:37

static 키워드

static이 붙는 변수는 데이터 영역에 할당되며 인스턴스 변수와는 다른 하나만 존재하는 변수이다.

 

코드사용예시를 보자.

// static 키워드
// 변수를 데이터 영역에 할당시키는 키워드

void Foo() {
	static int fooNum = 0; // 선언과 동시에 한부분은 재실행하지않아서 아래를 실행하면 0, 1이 뜸
	int temp = 0;
	cout << fooNum << endl;
	fooNum++;
	temp++;
}

void main() {
	static int localNum = 30;
	cout << globalNum << endl;
	cout << localNum << endl;
	Foo();
	Foo();
}


// 클래스나 구조체에 static키워드가 붙은 속성(변수)나 기능(함수)는
// 해당 클래스로 찍어내는 객체(인스턴스)와 무관하게 독립적으로 존재한다.

class Character {
protected:
	int hp;
public:
	//static 처리된 변수는 객체의 생성과 무관하게 이미 할당되어있다.
	static int characterCount; // 이미할당되어있어서 characterCount로 사용할수있음
	Character() {
		characterCount++;
	}
	~Character() {
		characterCount--;
	}
};
//객체의 생성과 무관하게 할당되어야 하기 때문에 전역의 영역에서 정의해줌
int Character::characterCount = 0;