C++ static

C++/C++ 문법 2019. 11. 25. 05:53
728x90

static 은 변수에 선언하거나, 함수에 선언할 수 있다.

- static으로 지정된 멤버는 생명주기가 전역 변수로 바뀐다.

- 모든 객체에서 공유하여 사용한다.

- 객체를 선언하지 않고 사용한다.

- 객체 소유가 아니므로 this 포인터를 사용할 수 없다.


예제1.

#include <iostream>
using namespace std;

void Counter() {
    int count = 0;
    cout << " " << count++;
}

void Counter2() {
    static int count = 0;
    cout << " " << count++;
}

class ABC {
public:
    int a;
    static int counter; // 여기에서 0 할당하면 에러가 발생한다.
    void getABC() {
        a = counter;
        cout << "a = " << a << endl;
    }
};

int ABC::counter = 0; // 클래스 외부에서 전역 변수처럼 초기화시켜야 한다.

int main() {
    for (int i = 0; i < 5; i++) {
        Counter(); // 함수가 호출될 때마다 값이 초기화 됨
    }
    cout << endl;

    for (int i = 0; i < 5; i++) {
        Counter2(); // main()함수가 종료되기 전까지 값을 유지
    }
    cout << endl;

    ABC abc = ABC(); // 객체 생성
    for (int i = 0; i < 5; i++) {
        abc.getABC(); // 함수 호출
        ABC::counter++; // couter 값 증가
    }
}
 

static 변수를 적용한 것과 적용하지 않은 경우 값의 결과를 출력해서 확인할 수 있도록 해봤다.


728x90

'C++ > C++ 문법' 카테고리의 다른 글

C++ 복사 생성자  (0) 2019.11.27
C++ 연산자 오버로딩  (0) 2019.11.26
C++ 클래스 이해  (0) 2019.11.23
C++ namespace(네임스페이스)  (0) 2019.11.22
C++ 오버로딩  (0) 2019.11.22
블로그 이미지

Link2Me

,