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;
'C++' 카테고리의 다른 글
template / 연산자 오버로딩 (0) | 2023.08.10 |
---|---|
예외처리 / try throw catch (0) | 2023.08.09 |
define 과 const 의 차이(심볼릭 상수) (0) | 2023.08.03 |
[C++] 순수가상함수, 추상클래스 (0) | 2023.07.28 |
[C++]배열의 동적할당 / 가상소멸자 (0) | 2023.07.18 |