C++을 배우다 보면 constexpr라는 키워드를 자주 보게 됩니다. 이름은 익숙하지만 정확한 개념이나 쓰임새를 잘 모르는 경우도 많죠. 이 글에서는 constexpr의 의미와 목적, 그리고 실제 코드에서 어떻게 활용하는지를 쉽게 정리해 보겠습니다.


1. expr란 무엇인가요?

먼저 constexpr의 구성부터 살펴볼게요.

  • exprexpression의 줄임말입니다.
  • expression표현식, 즉 어떤 값을 계산할 수 있는 코드 조각을 의미합니다.

📌 예시 표현식

5 + 3         // 8
x * y + 2     // 변수 기반 표현식
std::sqrt(4)  // 2

2. constexpr의 의미

📌 용어 정리

constexpr = constant expression
컴파일 시간에 값이 결정되는 표현식(상수)

🧠 핵심 정의

  • constexpr컴파일 타임에 계산 가능한 상수를 정의하는 키워드입니다.
  • 즉, 프로그램이 실행되기 전에 미리 계산되어 있어야 하며, 변경될 수 없습니다.

3. constexpr vs const

const

const int a = 5;
  • 상수이긴 하지만, 컴파일 타임에 꼭 결정될 필요는 없습니다.
  • 경우에 따라 런타임 초기화가 허용됩니다.

constexpr

constexpr int b = 5;
  • 반드시 컴파일 타임에 값이 확정되어야 함.
  • 컴파일러가 보장할 수 없는 값이면 오류 발생.

4. 왜 constexpr가 중요한가요?

  1. 성능 최적화
    → 실행 시 계산을 생략할 수 있어 프로그램 속도 개선

  2. 정적 조건에 필요한 값 제공
    → 배열 크기, switch 문, 템플릿 인자 등에 사용 가능

  3. 코드의 명확한 의도 표현
    → 이 값은 절대 바뀌지 않으며, 컴파일 시점에만 유효하다는 의미 전달


5. 실전 예제

constexpr int kBufferSize = 256;

char buffer[kBufferSize];  // 배열 크기는 컴파일 타임에 필요

여기서 kBufferSizeconstexpr이기 때문에 배열 크기 지정에 사용할 수 있습니다. 만약 const만 사용했다면 컴파일 타임에 값이 확정되지 않을 수도 있어 컴파일 오류가 날 수 있어요.


6. 요약 표

개념의미예시
exprexpression (표현식)a + b, sqrt(4)
constexpr컴파일 타임 상수 표현식constexpr int k = 10;
주요 사용처배열 크기, 템플릿, switch문char arr[k];, template<int N>
주요 장점성능 향상, 오류 방지, 의도 표현

7. 마무리

constexpr는 단순히 상수를 정의하는 키워드를 넘어서, 성능 향상, 코드 명확성, 정적 제약조건 충족을 위한 핵심 도구입니다. 특히 고성능이 중요한 시스템 프로그래밍이나 컴파일 타임 계산이 필요한 템플릿 기반 코드에서 매우 유용하게 쓰입니다.

constconstexpr의 차이를 명확히 이해하고 상황에 맞게 활용해보세요!


profile
AI developer

0개의 댓글