Steady Blog
19. 정적변수 본문
*정적 변수
<*참고*> 변수의 위치
1. 지역변수 - 선언된 함수 안에서만 사용 가능
2. 전역변수 -모두 함수안에서 사용 가능
3. static 변수(정적 변수)
- 함수 내에 선언된 변수를 말함. //지역변수 특징
- 함수 내에서만 사용이 가능하다. //지역 변수 특징
ㄱ) 변수를 선언하면 메인 함수가 수행되기 이전에 변수가 생성되며,
프로그램이 종료될 때 메모리에서 소멸 된다. // 전역 변수 특징
ㄴ) 초기화 시키지 않아도 자동 초기화 됨
ㄷ) 매개변수 기재 부분에는 static변수를 선언 할수 없다.
int a; //전역변수
void ex()
{
int b; // 지역변수
}
정적 맴버 -클래스 내 static을 붙여 선언한 맴버를 정적맴버라 하는데 정적맴버는 클래스 내에 선언된 맴버지만
클래스의 맴버는 아니다.
정적맴버는 main 함수가 호출되기 전 메모리 공간에 올라가서 초기화 되기 때문에 객체 생성과는 상관없이 사용할 수 있다.
정적 맴버의 특징
1) 정적 맴버 외부 정의시 static 키워드는 선언부에만 쓴다.
2) 정적 맴버함수는 정적 맴버 변수만 접근할수 있다.
3) 정적 맴버변수의 초기화는 맴버 함수 내에서 할수 없다. ( 객체 생성이전에 메모리가 할당하기 때문)
<연습 예제>
static 연습.
class point
{
static int cnt; // class의 맴버 함수만 접근이 가능하다.
int x,y;
public:
point(int _x, int _y);
void OutPointInfo() const;
static void OutPointCount(); //static 이 없으면 cnt에 접근이 안된다.
};
int point::cnt = 0; // static 변수 초기화
point::point(int _x, int _y):x(_x),y(_y) // cnt++를 바로 옆에 못쓰는 이유는 맴버변수만 이용이 가능하기 때문이다.
{
cnt++;
}
void point::OutPointInfo() const
{
cout<<"x = "<<x<<", y= "<<y<<endl;
}
void point::OutPointCount()
{
cout<<"생성된 좌표는 "<<cnt<<"개 입니다.\n";
}
void ch9_03()
{
point::OutPointCount();
point p1(50,50);
point::OutPointCount();
point p2(20,60);
point p3(30,80);
point::OutPointCount();
p1.OutPointInfo();
p2.OutPointInfo();
p3.OutPointInfo();
}
'Programing > C++' 카테고리의 다른 글
21. 상속 part 2 ---정리 필요함. (0) | 2012.09.04 |
---|---|
20. 상속 (0) | 2012.09.04 |
18. const변수 (0) | 2012.09.04 |
17. 생성자, 소멸자 (0) | 2012.09.04 |
14. 포인터 배열 (0) | 2012.09.04 |