C++ static

김태완·2025년 1월 27일

C++ 강의를 찾아 들어보던 중 static이라는 키워드를 알게 되었는데, 정리를 해 두면 나중에 찾아보기 좋을 것 같다는 생각이 들었다.

static 키워드란

공통적인, 고정된이라는 뜻으로 모든 객체가 공유하는 값을 말한다.

따라서 코드의 메모리 관리 및 프로그램 구조를 최적화 하는데 용이한 키워드로 상황에 따라 효율적으로 코드의 작성을 할 수 있게 된다.

static 변수

  • 지역 변수

static을 지역 변수에 사용하면 함수 내부에서만 접근을 할 수 있지만, 한번 생성된 변수는 프로그램이 종료가 될 때 까지 유지된다.
따라서, 동일한 함수가 여러 번 호출되어도 변수의 초기화가 한 번만 이루어진다.

static 지역 변수의 특징

  1. 프로그램 내에서 한 번만 초기화가 진행된다.
  2. 함수가 종료되어도 값이 유지된다.
  3. 초기화하지 않으면 0으로 초기화된다.
  • 전역 변수

static을 전역 변수에 사용하면 파일 내부에서만 접근을 할 수 있다.
다른 파일에서 접근을 할 수 없기에 외부 파일에서 값을 수정하거나 접근을 할 수 없게 된다.

static 전역 변수의 특징

  1. 전역 변수의 사용 범위를 변수가 선언된 파일로 제한한다.
  2. 외부 파일로 노출되지 않아 코드의 충돌 방지 및 캡슐화에 유리하다.

static 클래스 멤버

static을 클래스 내에서 사용하면 클래스 자체에 속하게 된다.
따라서 해당 키워드가 붙은 함수더라도 클래스 전체에서 공유된다.
클래스 내의 모든 객체가 해당 멤버를 공유하며, 객체를 생성하지 않아도 접근할 수 있게 된다.

static 클래스 멤버의 특징

  1. static 멤버 변수는 모든 객체가 공유하는 하나의 값을 가진다.
  2. static 멤버 변수는 클래스 외부에서 정의 및 초기화해야 한다.
  3. static 멤버 함수는 클래스에 소속되어 있으며, 객체 없이 호출할 수 있다.
  4. static 멤버 함수는 this 포인터를 사용할 수 없다.

static 멤버 함수와 일반 함수의 차이

특징일반 멤버 함수static 멤버 함수
소속객체에 소속클래스에 소속
this 포인터 사용 가능 여부가능불가능
객체 없이 호출 가능 여부불가능가능
접근 가능 멤버모든 멤버에 접근 가능static 멤버만 접근 가능

static 키워드 요약

사용 위치역할 및 동작
지역 변수함수 내에서 선언되며, 함수가 여러 번 호출되더라도 값을 유지.
전역 변수선언된 파일 내에서만 접근 가능하도록 제한.
클래스 멤버 변수모든 객체가 공유하는 클래스 단위의 변수.
클래스 멤버 함수객체 없이 클래스 단위로 호출 가능. this 포인터를 사용할 수 없으며, static 멤버만 접근 가능.

마치며

static이라는 단어 자체는 들어본 적이 있었지만 무슨 뜻인지도 몰랐던 단어였는데, 이번 기회에 코딩에서 중요한 역할을 할 수 있는 키워드라는 것을 알 수 있었던 것 같다.

0개의 댓글