본문 바로가기
C++/기본

[C++] 15. 클래스(3)

by 위니밍 2025. 3. 29.
반응형
📌 요약: 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_valueinstance2.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