일반 data member는 객체마다 하나씩 만들어진다.
ㄴ 각 클래스내부에서든 함수에서든 변수가 정의가 될때 일반 변수들은 정의가 될 때마다 메모리공간에 하나씩 할당이 된다
static data member 는 공통적인 객체에 대해서는 단 하나만 만들어진뒤 유지된다.
ㄴ 어떤 클래스, 함수든 같은 클래스, 함수에 대해서 정의가 되는순간 한번만 정의가 된 뒤 (메모리 공간에 한번만 할당) 계속 그 변수만(메모리 공간만) 사용한다.
static data member
| 일반 data member
|
|
|
static data member 사용하는 이유
|
ㄴ #define MAX 100 처럼도 사용 가능 ( 매크로 대신에 사용함. )
ㄴ 특정 클래스를 위한 전역변수 처럼도 사용가능
( 어떠한 객체의 갯수 count 를 위해 n을 전역으로 만들고 위의 int X::MAX = 100 처럼 int X::count = 0 이렇게 만들고 생성자에서 n++식으로 사용가능)
ㄴ 현재 위상태에서 C 와 MAX 는 private 상태임 ( 내부 public private 등등의 방식도 다 적용 )
똑같이 함수에도 적용가능
ㄴ C랭기지 전역함수를 클래스안에 배치할 때 // static int add(int x, int y)
ㄴ static data member 를 엑세스 하기 위해서 ( static data member 내용을 불러오거나 변경이 필요할 때 )
1 2 3 4 | static void SetC(int i) { c = i; } | cs |
ㄴ static function 에서는 내부의 일반 data member 의 변수에 접근&수정 불가능
(static function 에는 this라는 개념이 없기 때문에 일반 변수의 주인을 알 수 없어서 접근이 불가능하다)
ㄴ 하지만 일반 function 에서는 static data member 의 변수에 접근&수정 가능
(일반 function 에서 전역(정적)static 변수는 이하 생략 - )
전역(static)으로 만들어진 변수 & 함수를 호출할때는 클래스명 :: 변수&함수명 으로 사용
c나 MAX의 값을 호출&사용할 때
X::c 또는 X::MAX 로 호출가능.
함수역시 X::SetC(10) 이런식으로 호출&사용 가능
1 2 3 4 | X::c = 100; X::MAX; X::SetC(10); | cs |
'Dev > [C++]개념정리' 카테고리의 다른 글
[개탱][C++][Operator Overloading][Operator][Overloading][복소수][complexNumber][2] (0) | 2018.01.02 |
---|---|
[개탱][C++][Operator Overloading][Operator][Overloading][복소수][complexNumber][1] (0) | 2018.01.02 |
[개탱][C++][template][Generic class] (0) | 2018.01.02 |
[개탱][C++][cin][cout][endl] (0) | 2018.01.02 |
[개탱][C++][using namespace std][namespace][네임스페이스][스탠다드] (0) | 2018.01.02 |