C++ - const vs constexpr
공통점
const 또는 constexpr가 붙은 변수에 값이 할당된 이후, 값의 수정이 불가능
// 상수 변수
const int a = 100;
a = 1000; // 값 변경 불가능
constexpr int b = 200;
b = 2000; // 값 변경 불가능
차이점
const : Run-Time에”도” 값을 결정
constexpr : Compile-Time에 값을 결정
int temp;
std::cin >> temp; // 런타임에 값 할당
const int a = temp + 100; // 가능
constexpr int b = temp + 200; // 불가능 -> temp는 std::cin에 의해 런타임에 정해지는 변수
// constexpr 변수는 컴파일 타임에만 값을 결정
상수 변수에 할당되는 값에 또다른 변수가 할당될 시, 컴파일 타임 or 런타임에 상수를 체크한다.
결론
constexpr을 사용할 수 있는 경우라면, const 대신 constexpr을 이용하자.
런타임에 값이 변경되지 않음을 보장할 수 있다.
댓글남기기