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

C++ 정적 멤버 변수와 초기화 방법 완벽 가이드

C++ 정적 멤버 변수란?

C++에서 정적(static) 멤버 변수static 키워드를 사용하여 정의합니다. 정적 멤버 변수는 메모리에 단 하나의 복사본만 존재하기 때문에, 클래스로부터 생성되는 객체의 수와 관계없이 모든 객체가 이 변수를 공유하게 됩니다.

또한 정적 멤버 변수를 별도로 초기화하지 않으면, 해당 클래스의 첫 번째 객체가 생성되는 시점에 자동으로 0으로 초기화됩니다.

예제 코드

다음 예제는 C++에서 정적 멤버 변수를 선언하고 초기화하는 과정을 보여줍니다.

#include <iostream>
using namespace std;
class Demo {
   public :
   static int num;
   int display() {
      cout << "The value of the static member variable num is: " << num;
   }
};
int Demo::num = 100;
int main() {
   Demo obj;
   obj.display();
   return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

The value of the static member variable num is: 100

코드 분석

1. 클래스 정의 및 정적 변수 초기화

Demo 클래스 내부에는 정적 멤버 변수 num이 선언되어 있으며, display() 함수는 num의 값을 화면에 출력하는 역할을 합니다.

중요한 점은 정적 멤버 변수는 클래스 내부에서 선언만 할 수 있고, 실제 메모리 할당과 초기화는 클래스 외부에서 범위 지정 연산자(::)를 사용하여 수행해야 한다는 것입니다. 위 코드에서는 int Demo::num = 100;을 통해 num을 100으로 초기화했습니다.

class Demo {
   public :
   static int num;
   int display() {
      cout << "The value of the static member variable num is: " << num;
   }
};
int Demo::num = 100;

2. main() 함수의 동작

main() 함수에서는 Demo 클래스의 객체 obj를 생성한 뒤, display() 함수를 호출하여 정적 멤버 변수 num의 값을 출력합니다.

int main() {
   Demo obj;
   obj.display();
   return 0;
}

핵심 정리

  • 정적 멤버 변수는 모든 객체가 공유하는 단일 복사본으로 존재합니다.
  • 클래스 내부에서는 선언만 하고, 클래스 외부에서 :: 연산자를 통해 정의 및 초기화해야 합니다.
  • 별도의 초기화가 없으면 첫 번째 객체 생성 시점에 0으로 자동 초기화됩니다.
  • 객체를 생성하지 않고도 Demo::num 형태로 직접 접근할 수 있습니다.