[C++] static, 정적 변수

강한·2024년 12월 13일

CPP

목록 보기
7/18
post-thumbnail

static 멤버 변수

모든 객체가 공유하는 멤버 변수
객체 마다 공통된 데이터를 가지게 하려면 사용하는데 클래스 외부에서 초기화를 해야한다.

class Player {
public:
	Player() {
    	id = IdGenerator++;
    }
public:
	int id;
    static int IdGenerator;
}
// 전역 범위에서 초기화
int Player::IdGenerator = 1;

int main() {
	// static 멤버 변수는 클래스 생성 없이 호출이 가능하다.
	cout << Player::IdGenerator;
}

공통된 데이터를 static이 아닌 멤버 변수로 가지게 된다면 해당 변수의 메모리 크기 * 객체 수가 되기 때문에 공통된 데이터는 static을 통해서 메모리 공간을 1번만 차지하므로 메모리를 절약할 수 있다.

static 함수

멤버 변수에 대한 접근이 불가능하며 static 변수만 접근 가능하다.
특정 객체에 대한 작업을 하는게 아니기 때문에 this 포인터 사용이 불가하다.
함수 도한 객체 생성 없이 호출이 가능하다.

profile
의지 강한 게임개발자

0개의 댓글