Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 정적 데이터 멤버를 초기화하는 방법

C++ 클래스에는 정적(static) 멤버, 즉 정적 함수나 정적 변수를 선언할 수 있습니다. 이 중 정적 변수는 클래스 내부에서 선언만 가능하며, 실제 메모리 할당과 초기화는 반드시 클래스 정의 외부에서 이루어져야 합니다.

정적 멤버 변수를 초기화하려면 클래스 이름 뒤에 범위 지정 연산자(::)를 붙이고, 그 다음에 변수 이름을 명시한 후 원하는 값을 대입하면 됩니다. 이렇게 초기화된 정적 변수는 프로그램 전체에서 단 하나의 복사본만 유지되며, 모든 객체가 이 값을 공유하게 됩니다.

다음 예제 코드는 정적 멤버 변수의 초기화 기법을 보여줍니다. 생성자가 호출될 때마다 정적 변수 값이 1씩 증가하므로, 지금까지 생성된 객체의 개수를 손쉽게 추적할 수 있습니다.

예제 코드

#include <iostream>
using namespace std;

class MyClass {
    private:
        static int st_var; // 정적 멤버 변수 선언
    public:
        MyClass() {
            st_var++; // 새 객체가 생성될 때마다 st_var 값 증가
        }
        static int getStaticVar() {
            return st_var;
        }
};

int MyClass::st_var = 0; // 클래스 외부에서 정적 변수 초기화

main() {
    MyClass ob1, ob2, ob3; // 세 개의 객체 생성
    cout << "Number of objects: " << MyClass::getStaticVar();
}

실행 결과

Number of objects: 3

위 코드에서 ob1, ob2, ob3 세 개의 객체가 생성되면서 생성자가 세 번 호출되고, 호출될 때마다 st_var가 1씩 증가하여 최종적으로 3이 출력됩니다. 이처럼 정적 멤버 변수는 객체별로 존재하는 것이 아니라 클래스 전체에 하나만 존재하기 때문에, 객체 생성 횟수와 같은 공통 상태를 관리하는 데 매우 유용합니다.