C++ 강의를 찾아 들어보던 중 static이라는 키워드를 알게 되었는데, 정리를 해 두면 나중에 찾아보기 좋을 것 같다는 생각이 들었다.
static 키워드란
공통적인, 고정된이라는 뜻으로 모든 객체가 공유하는 값을 말한다.
따라서 코드의 메모리 관리 및 프로그램 구조를 최적화 하는데 용이한 키워드로 상황에 따라 효율적으로 코드의 작성을 할 수 있게 된다.
static 변수
static을 지역 변수에 사용하면 함수 내부에서만 접근을 할 수 있지만, 한번 생성된 변수는 프로그램이 종료가 될 때 까지 유지된다.
따라서, 동일한 함수가 여러 번 호출되어도 변수의 초기화가 한 번만 이루어진다.
static 지역 변수의 특징
static을 전역 변수에 사용하면 파일 내부에서만 접근을 할 수 있다.
다른 파일에서 접근을 할 수 없기에 외부 파일에서 값을 수정하거나 접근을 할 수 없게 된다.
static 전역 변수의 특징
static 클래스 멤버
static을 클래스 내에서 사용하면 클래스 자체에 속하게 된다.
따라서 해당 키워드가 붙은 함수더라도 클래스 전체에서 공유된다.
클래스 내의 모든 객체가 해당 멤버를 공유하며, 객체를 생성하지 않아도 접근할 수 있게 된다.
static 클래스 멤버의 특징
static 멤버 함수와 일반 함수의 차이
| 특징 | 일반 멤버 함수 | static 멤버 함수 |
|---|---|---|
| 소속 | 객체에 소속 | 클래스에 소속 |
| this 포인터 사용 가능 여부 | 가능 | 불가능 |
| 객체 없이 호출 가능 여부 | 불가능 | 가능 |
| 접근 가능 멤버 | 모든 멤버에 접근 가능 | static 멤버만 접근 가능 |
static 키워드 요약
| 사용 위치 | 역할 및 동작 |
|---|---|
| 지역 변수 | 함수 내에서 선언되며, 함수가 여러 번 호출되더라도 값을 유지. |
| 전역 변수 | 선언된 파일 내에서만 접근 가능하도록 제한. |
| 클래스 멤버 변수 | 모든 객체가 공유하는 클래스 단위의 변수. |
| 클래스 멤버 함수 | 객체 없이 클래스 단위로 호출 가능. this 포인터를 사용할 수 없으며, static 멤버만 접근 가능. |
마치며
static이라는 단어 자체는 들어본 적이 있었지만 무슨 뜻인지도 몰랐던 단어였는데, 이번 기회에 코딩에서 중요한 역할을 할 수 있는 키워드라는 것을 알 수 있었던 것 같다.