**static 변수 (class 변수)
class OBJ
{
private:
static int m_iA; static변수는 멤버 변수가 아님
public:
OBJ(){}
void Render() { cout << m_iA << endl; }
};
멤버 변수 : class의 구성 멤버
클래스 변수 : 객체의 멤버가 아니다. 다만 OBJ의 네임스페이스를 통해 접근 가능
int OBJ:: m_iA = 100; 클래스 변수 초기화(외부 기호이기 떄문에 클래스 외부에서 초기화를 시켜야 한다.)
**static 함수(class 함수)
class OBJ
{
private:
int m_iA=100;
public:
static void Render()
{
m_iA = 99; 멤버 변수 읽기/쓰기 불가
cout<<m_iA<<endl;
}
};
class함수는 객체 생성 이전에도 사용할 수 있기 때문에 함수 내부에서 멤버 변수 사용이 불가능하다.
클래스의 양이 적은 소규모 프로젝트에서는 잘 사용하지 않지만 큰 프로젝트에서는 static이 유용하게 사용된다.
주로 클래스 사이에서 전역적으로 사용되는 상호작용(충돌처리) 기능들을 static함수와 변수로 만들어 클래스에 담아 관리한다