C++ 정적 멤버 (static)
1. 개요
1.1 문서 개요
이 문서는 C++에서 클래스의 정적(static) 멤버에 대해 설명합니다. 정적 멤버는 클래스에 속하면서도 개별 객체가 아닌 클래스 전체에서 공유되는 멤버입니다.
2. 내용
2.1 정적 멤버 변수
2.1.1 선언 및 정의
class MyClass {
public:
static int count;
};
int MyClass::count = 0;
static
키워드로 선언하며, 클래스 외부에서 한 번만 정의해야 합니다.- 모든 객체가 동일한
count
값을 공유합니다.
2.1.2 사용
MyClass::count++; // 객체 없이도 접근 가능
2.2 정적 멤버 함수
2.2.1 선언 및 사용
class MyClass {
public:
static void printCount() {
std::cout << count << std::endl;
}
};
static
멤버 함수는 객체 없이 클래스 이름으로 직접 호출 가능합니다.this
포인터를 사용할 수 없습니다.
2.3 정적 멤버의 활용 예
2.3.1 객체 개수 추적
class Counter {
private:
static int count;
public:
Counter() { count++; }
static int getCount() { return count; }
};
int Counter::count = 0;
정적 멤버를 통해 생성된 객체의 총 수를 추적할 수 있습니다.
3. 마무리
정적 멤버는 클래스 수준에서 공유되는 자원을 정의할 수 있게 하며, 객체 수 관리, 공용 상수, 클래스 유틸리티 함수 등에 활용됩니다. 멤버 변수는 반드시 클래스 외부에서 정의되어야 하며, 정적 함수는 this
에 접근할 수 없습니다.