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키워드로 선언하는 것이 불가능 합니다.