C++ const (컴파일 상수/런타임 상수) 그리고 constexpr
카테고리: Cpp
태그: Cpp Programming
🚀 C에서의 const
const int size = 2;
int arr[size]; // ❌ C에선 안된다.
C 언어에서
const
는 런타임 상수이다.
- 런타임 상수라는 의미는
const
인size
공간 안에 2 가 할당 되는 것은 컴파일까지 다 마친 후 프로그램이 실행 될 때 이루어진다는 것이다. - C언어에서는
const
가 오로지 런타임 상수이기 때문에const
로 배열의 크기를 결정할 수 없다.
🚀 C++에서의 const
const int size = 2; // 👉 이땐 컴파일 상수
int arr[size]; // ⭕ C++ 에선 가능하다.
int num = 2;
const int size = num; // 👉 이땐 런타임 상수
int arr[size]; // ❌ 불가능.
C++ 언어에서
const
는 맥락에 따라 컴파일 상수도 될 수도 있고 런타임 상수도 될 수 있다.
- C++에서는 초기화 될 때 그 Value 가 어떤 타임에 결정되는 것이냐에 따라 컴파일 상수가 될지 런타임 상수가 될지 결정 되는 듯하다.
- 아무튼 C++ 에서는
const
가 런타임에도 결정될 수 있고 컴파일 타임에도 결정될 수 있다.
✈ constexpr
constexpr int my_const(123); // ⭕
int number;
cin >> number;
constexpr int my_const2(number); // ❌ error !
C++ 에서
constexpr
을 사용하면 컴파일타임 상수라는 의미이다.
그래서 C++ 에는 constexpr
라는 것이 존재한다. const
가 런타임에도 컴파일 타임에도 결정될 수 있기 때문에 얘가 등장한 것 같다. 컴파일 타임 상수라는 것을 확실히 할 수 있는 키워드다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기