C++
[C++] const와 constexpr의 차이
yeoul0714
2025. 4. 3. 19:46
ㅊconst와 constexpr의 차이는 무엇일까?
공통점은 두 함수 모두다 상수를 지정해주는 키워드라는 점이다.
const : 컴파일 타임/런 타임 상수
#include <iostream>
using namespace std;
int GetInt()
{
return 3;
}
int main()
{
const int a = 10; // 컴파일 타임 상수
const int b = GetInt(); // 런타임 상수
}
이렇게 작성된 경우 a는 컴파일 타임에 결정되는 상수이고
b는 런타임에 결정되는 상수이다.
constexpr: 반드시 컴파일 타임 상수
constexpr은 C++11에서 도입된 키워드로, 반드시 컴파일 타임에 평가되는 상수 표현식을 선언합니다.
#include <iostream>
using namespace std;
int GetInt()
{
return 3;
}
int main()
{
const int a = 10;
constexpr int b = GetInt(); // 컴파일 오류 발생
}
b는 런타임에 결정되기 때문에 constexpr키워드로 선언하는 것이 불가능 합니다.