멤버 데이터는 객체당 한 개가 생성
Case 1 - 전역 변수 이용하는 방법 / 어디서든 접근 가능하기 때문에 안전하지 않음
Case 2 - static을 사용하는 방법 / 반드시 클래스 외부에서 선언 되어야함
class Car{
static int a = 0; // error
inline static int b = 0; // ok
}
class Car{
int speed{0};
public:
static int count;
Car(){count++;}
~Car(){--count;}
};
int Car::count{0}; // 모든 Car 객체가 Car::count를 공유함
class Test{
int a;
static int b;
public:
void func1(){
a = 1; #1
b = 2; #2
func2(); #3
}
static void func2(){
a = 1; #4
b = 2; #5
func1(); #6
}
}
int Test::b{0};
int main(){
Test::func2(); // #4 #6 error. 객체로 선언 안되어있음
Test t;
t.func1() ; // 에러 안생김
}