C++을 배우다 보면 constexpr라는 키워드를 자주 보게 됩니다. 이름은 익숙하지만 정확한 개념이나 쓰임새를 잘 모르는 경우도 많죠. 이 글에서는 constexpr의 의미와 목적, 그리고 실제 코드에서 어떻게 활용하는지를 쉽게 정리해 보겠습니다.
expr란 무엇인가요?먼저 constexpr의 구성부터 살펴볼게요.
expr는 expression의 줄임말입니다.expression은 표현식, 즉 어떤 값을 계산할 수 있는 코드 조각을 의미합니다.5 + 3 // 8
x * y + 2 // 변수 기반 표현식
std::sqrt(4) // 2
constexpr의 의미
constexpr= constant expression
→ 컴파일 시간에 값이 결정되는 표현식(상수)
constexpr는 컴파일 타임에 계산 가능한 상수를 정의하는 키워드입니다.constexpr vs constconstconst int a = 5;
constexprconstexpr int b = 5;
constexpr가 중요한가요?✅ 성능 최적화
→ 실행 시 계산을 생략할 수 있어 프로그램 속도 개선
✅ 정적 조건에 필요한 값 제공
→ 배열 크기, switch 문, 템플릿 인자 등에 사용 가능
✅ 코드의 명확한 의도 표현
→ 이 값은 절대 바뀌지 않으며, 컴파일 시점에만 유효하다는 의미 전달
constexpr int kBufferSize = 256;
char buffer[kBufferSize]; // 배열 크기는 컴파일 타임에 필요
여기서 kBufferSize는 constexpr이기 때문에 배열 크기 지정에 사용할 수 있습니다. 만약 const만 사용했다면 컴파일 타임에 값이 확정되지 않을 수도 있어 컴파일 오류가 날 수 있어요.
| 개념 | 의미 | 예시 |
|---|---|---|
expr | expression (표현식) | a + b, sqrt(4) |
constexpr | 컴파일 타임 상수 표현식 | constexpr int k = 10; |
| 주요 사용처 | 배열 크기, 템플릿, switch문 | char arr[k];, template<int N> |
| 주요 장점 | 성능 향상, 오류 방지, 의도 표현 |
constexpr는 단순히 상수를 정의하는 키워드를 넘어서, 성능 향상, 코드 명확성, 정적 제약조건 충족을 위한 핵심 도구입니다. 특히 고성능이 중요한 시스템 프로그래밍이나 컴파일 타임 계산이 필요한 템플릿 기반 코드에서 매우 유용하게 쓰입니다.
const와 constexpr의 차이를 명확히 이해하고 상황에 맞게 활용해보세요!