[c++] 구조체와 클래스의 클래스 내부 정적 변수
구조체와 클래스는 자체적으로 멤버 변수를 포함하며 이러한 변수들은 해당 구조체나 클래스의 각 인스턴스에 속합니다. 하지만 때때로 모든 인스턴스가 공유하는 변수를 선언해야 할 때가 있습니다. 이때, 클래스 내부에 정적(static) 변수를 사용할 수 있습니다.
구조체 내부 정적 변수
구조체 내부에서 정적 변수를 선언하면 모든 구조체 인스턴스가 이 변수를 공유합니다.
struct MyStruct {
static int count;
};
int MyStruct::count = 0; // 정적 변수 초기화
위 코드에서 count
는 MyStruct
의 모든 인스턴스에서 공유되는 변수입니다.
클래스 내부 정적 변수
클래스 내부에 정적 변수를 선언할 때는 static
키워드를 사용합니다.
class MyClass {
public:
static int instanceCount;
};
int MyClass::instanceCount = 0; // 정적 변수 초기화
instanceCount
변수는 MyClass
의 모든 인스턴스에서 공유됩니다.
클래스 내부에서 정적 변수 사용 예제
아래는 MyClass
클래스 내부에서 정적 변수를 사용하는 예제입니다.
#include <iostream>
class MyClass {
public:
static int instanceCount;
MyClass() {
instanceCount++;
}
};
int MyClass::instanceCount = 0;
int main() {
MyClass obj1;
std::cout << "Instance count: " << MyClass::instanceCount << std::endl;
MyClass obj2;
std::cout << "Instance count: " << MyClass::instanceCount << std::endl;
return 0;
}
instanceCount
변수는 MyClass
의 모든 인스턴스에서 공유되므로, 각 인스턴스가 생성될 때마다 값이 증가합니다.
요약
클래스 내부 정적 변수는 해당 클래스의 모든 인스턴스에서 공유되며, 클래스 멤버 함수 내에서 사용되는 경우 인스턴스화 없이도 접근할 수 있습니다. 이러한 특징을 활용하여 모든 인스턴스가 공유해야 하는 데이터나 행위를 구현할 수 있습니다.