C++ const (컴파일 상수/런타임 상수) 그리고 constexpr

Date:     Updated:

카테고리:

태그:

🚀 C에서의 const

const int size = 2;
int arr[size];  // ❌ C에선 안된다.

C 언어에서 const는 런타임 상수이다.

  • 런타임 상수라는 의미는 constsize 공간 안에 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가 런타임에도 컴파일 타임에도 결정될 수 있기 때문에 얘가 등장한 것 같다. 컴파일 타임 상수라는 것을 확실히 할 수 있는 키워드다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Cpp 카테고리 내 다른 글 보러가기

댓글 남기기