본론으로 가기 전에 정적 멤버 변수 (class member variable) 부터 보도록 하겠습니다.
- 정적 멤버 변수는 전역 변수와 저장원리가 같습니다.
- 정적 멤버 변수는 클래스 외부 (file scope) 단위로 초기화 되어야 합니다.
- 글로벌 변수를 초기화 하는 것처럼. 소스 코드 파일 (.cc) 내 함수 외부에서 int class::variable = 0 이런식으로 초기화 되어야 합니다.
- private로 선언한 정적 멤버 변수 역시 같은 방법으로 초기화 되어야 합니다. private 클래스 멤버의 경우 클래스 함수 내에서만 접근 가능하지만 이같이 소스 파일에 적어 초기화를 할 때만 예외를 둡니다.
- 정적 멤버 변수는 클래스 내 모든 객체가 공통으로 사용 할 수 있습니다. public으로 선언된 정적 멤버 변수는 누구나 접근이 가능합니
그러면 만약 정적 멤버 변수가 private 로 선언되어 있다면 어떻게 접근 할까요?
- 접근에 필요한 클래스 인스턴스를 초기화하고 필요한 멤버 함수를 호출 할 수 있을 것입니다.
- 하지만, 간단한 작업이라면 static 멤버 함수를 하나 두어 인스턴스 초기화가 필요하지 않도록 할 것입니다.
- 결론으로, 멤버 함수를 static으로 선언하는 이유 중 하나는 private로 선언한 정적 멤버 변수를 클래스 외부에서 static 멤버 함수를 호출해 접근 가능하도록 만들기 위해서 입니다.
'개발 관련 기타 > C++' 카테고리의 다른 글
[프로그래머스] (C++) 점프와 순간이동 (0) | 2019.12.02 |
---|---|
[프로그래머스] (C++) 최댓값과 최솟값 (0) | 2019.11.28 |
[프로그래머스] (C++) 단체사진 찍기 예제 테스트 방법 (0) | 2019.11.28 |
[C++] std::max, std::max_element 또는 std::sort 에서 compare 함수의 역할 (0) | 2019.11.21 |
[C++] system() 함수 사용 결과 / 쉘 명령 (command) 결과 (stdout) 를 문자열 (string) 로 받기 (0) | 2019.11.15 |