승쨩개발공부
[C++] static과 클래스, 멤버함수 본문
static과 클래스
->static 변수의 초기화는 전역에서 진행한다.
static 변수는 Data 영역에 등록이 된다.
-> 프로그램 시작 시 메모리에 등록된다.
-> 사용자가 객체를 몇개 만들지 알 수 없는 상황이기 떄문에
-> 컴파일러가 static 변수를 여러개 만들 수 없다.
-> 그래서, 단 하나만 메모리에 등록시킨 후 해당 클래스로 만든 모든 객체가 static 변수를 공유한다.
static 변수의 초기화
static 변수는 이니셜라이즈를 통해 초기화가 불가능하다.
왜냐하면 static 변수는 프로그램 시작 시 Data영역에 메모리 할당이 되고,
생성자의 호출 시점은 런타임 중 객체를 만드는 시점에 메모리에 등록이 되기 떄문이다.
static 변수의 초기화 방법
static 변수는 전역 변수로 초기화를 진행한다.
static 멤버 함수
static 멤버 함수/변수는 객체를 생성하지 않아도 접근 지정자가 public이면
static 멤버 함수/변수의 접근이 가능하고, 일반 함수/멤버 변수의 접근이 불가능하다.
단, 일반 멤버 함수 내부에서는 static 멤버 함수/변수 접근이 가능하다.
static과 const의 차이점
1.static
선언을 하게 되면 위치와 상관없이 프로그램의 시작과 끝까지 메모리에 할당되어 있고,
그 값을 마음대로 바꿀 수 있다.
위치에 대해서는 전역변수든 지역변수든 상관 없다.
2.const
해당 변수를 초기화한 이후에는 절대로 바꾸지 못하도록 선언하는 것.
초기화가 되고나면 그 이후에는 값을 바꿀 수 없게 된다.
'C++' 카테고리의 다른 글
[C++] this포인터, extern, friend (0) | 2021.12.03 |
---|---|
[C++] 복사 생성자(얕은복사, 깊은복사) (0) | 2021.12.03 |
[C++] const와 클래스, 멤버함수, 이니셜라이져 (0) | 2021.12.02 |
[C++] 전방 선언 (0) | 2021.12.02 |
[C++] 생성자와 소멸자 (0) | 2021.12.02 |