본문 바로가기

예전/C, C++

[C++] static 멤버 변수, 함수


static 멤버 변수, 함수 ( http://blog.daum.net/coolprogramming/67 ) 


http://showmiso.tistory.com/95


에서 보통 함수의 지역 변수는  stack 영역에 저장되지만, static 으로 선언한 지역 변수는 메모리 영역 중 static영역에 저장되어 프로그램이 종료할 때까지 사라지지 않는다. 라고 했습니다.





class A의 객체 a를 선언하게 되면, A의 멤버 변수와 멤버 함수는 이 객체의 인스턴스 멤버 변수, 멤버 함수가 된다.

하지만, static 멤버 변수와 static 멤버 함수는 객체가 소유하지 않는 멤버 변수, 멤버 함수이다.


위에서 말했듯 static 으로 선언한 지역 변수는 static 영역에 저장되기 때문에 a 객체의 인스턴스 멤버가 될 수 없는 것이다.


그래서 


1. static 멤버 함수는 객체없이도 호출될 수 있다.

2. this가 없기 때문에, 멤버에 접근할 수 없다.


this가 없기 때문에, 멤버에 접근할 수 없다는 이유로 여러 기술이 생겨났다.



'예전 > C, C++' 카테고리의 다른 글

[C++] upcasting  (0) 2014.01.28
[C++] 일반 함수 포인터, 멤버 함수 포인터  (0) 2014.01.28
[C] memmove와 memcopy  (0) 2013.08.24
[C++] reinterpret_cast  (0) 2013.08.23
[C++] dynamic_cast  (0) 2013.08.21