반응형
📌 요약: static 정적 멤버 변수 | 정적 멤버 함수 | 인스턴스 간 공유 | 클래스 외부 초기화
🔁 정적 멤버 변수 (static 변수)
static 키워드를 사용하면 해당 멤버는 클래스 전체에서 하나만 존재합니다.
모든 인스턴스가 공통으로 이 변수 하나를 공유합니다.
class StaticClass {
public:
static int s_value; // 정적 멤버 변수
int m_value;
};
📌 외부 초기화 필요
정적 멤버 변수는 생성자 내부에서 초기화할 수 없으며, 반드시 클래스 외부에서 초기화해야 합니다.
// 클래스 외부에서 정적 멤버 변수 정의 및 초기화
int StaticClass::s_value = 0;
⚙️ 정적 멤버 함수
정적 멤버 함수는 인스턴스를 생성하지 않아도 호출이 가능하며, 정적 멤버 변수만 접근할 수 있습니다.
class StaticClass {
public:
static int s_value;
int m_value;
static void S_Function() {
s_value = 0; // ✅ 가능
//m_value = 0; // ❌ 불가능 - 인스턴스 멤버 접근 불가
}
void M_Function() {
s_value = 0; // ✅ 가능
m_value = 0; // ✅ 가능
}
};
🧪 정적 변수 공유 예제
두 개의 인스턴스를 통해 정적 멤버 변수를 변경해보면, 모든 인스턴스가 영향을 받습니다.
StaticClass instance1;
StaticClass instance2;
instance1.s_value = 1;
instance2.s_value = 2;
cout << instance1.s_value << endl; // 2
cout << instance2.s_value << endl; // 2
cout << StaticClass::s_value << endl; // 2
instance1.s_value와instance2.s_value는 결국 같은 주소의 변수StaticClass::s_value를 통해 직접 접근하는 것이 명확한 사용
반응형
'C++ > 기본' 카테고리의 다른 글
| [C++] 18. OOP - 상속 (0) | 2025.03.29 |
|---|---|
| [C++] 16. OOP(객체지향 프로그래밍) (0) | 2025.03.29 |
| [C++] 14. 클래스(2) (0) | 2025.03.29 |
| [C++] 13. 클래스(1) (0) | 2025.03.29 |
| [C++] 12. 구조체(3) (0) | 2025.03.29 |