C 에서의 static |
: C언어에서 static을 사용했던 이유는 전역변수는 프로그램어느 곳에서 접근 가능하지만, 지역변수에다가 static을 붙여주면, 지역변수가 전역변수의 특성을 지니게 하면서 접근할 수 있는 범위에 제한을 둔다는 특징이 있기 때문이었다.
Class, Static 멤버의 등장 |
위의 예제는 전역 변수 count가 있고, person이 생성 될때마다 count 값을 한번씩 증가 시키고 출력시키는 프로그램이다. 생성되는 person 객체는 전역변수 count를 참조해서 값이 일정하게 증가될 것이다. 하지만 C++로 넘어 오면서 우리는, OOP, 객체지향 프로그래밍을 위하여 전역 변수, 전역 함수를 쓰지 않도록 해야 한다!!
static 멤버의 특징 |
2. main 함수 호출 이전에 메모리 공간에 올라가서 초기화 한다. (전역변수와 동일)
3. 선언된 클래스의 객체 내에 직접 접근을 허용한다.
4. static 멤버 초기화문으로 초기화해야 한다. 왜 초기화문이 필요한가? 예제를 통해 알아 봅시다.
static 멤버는 메인 함수 호출 되기 이전에 초기화가 이루어진다. 하지만 이 count를 생성자 내에서 초기화 시킬 경우에 메모리 공간에 올라감과 동시에 초기화가 이루어 지는게 아니라, 객체가 생성될때마다 값이 리셋될것이다. 그래서 항상 같은 결과만을 출력하게 되기 때문에 초기화를 위해 static 멤버 초기화문이 등장했다.
'Programming > C / C++' 카테고리의 다른 글
[C++] 상속과 다형성 (Inheritance & Polymorphism) (2) | 2010.09.15 |
---|---|
[C++] Explicit과 Mutable (1) | 2010.09.12 |
[C++] 클래스에서의 멤버 변수, 멤버 함수의 상수화 (const의 사용법) (2) | 2010.09.12 |
[C++의 특징 -5] This 포인터와 Friend (0) | 2010.09.12 |
[C++] 생성자와 소멸자 (Constructor & Destructor) - 두번째 (0) | 2010.09.09 |