C언어에서 static과 C++에서의 static 은 다르다.
C++에서는 전역이라는 개념이 없다. 그것을 대체하기 위해서 static이 있는 것이다.
#include <iostream>
class A {
private:
static int count;
public:
A() {
count++;
}
void showCount() {
std::cout << count << std::endl;;
}
};
int A::count = 0;
int main()
{
A *a = new A();
a->showCount();
//출력값 : 1
A *b = new A();
b->showCount();
//출력값 : 2
return 0;
}
17번 째 줄에서 보시다시피 static 변수를 초기화할 때는 main 함수 안이 아닌 밖에서 초기화해주어야 한다.
또한, static 변수는 선언과 초기화를 동시에 하지 못한다는 것을 기억하자
반응형