본문 바로가기
C++/C++

[C++] constexpr

by sihyeong 2022. 11. 13.

constexpr

  • 객체나 함수 앞에 붙여 사용하는 키워드
  • 변수나 함수, 생성자 함수에 대하여 컴파일 타임에 평가될 수 있도록 처리 해줌
  • 따라서 객체나 함수의 리턴값을 컴파일 타임에 값을 알 수 있다.
  • constexpr 변수, 함수의 반환값은 항상 Literal Type 이어야 한다.
  • 함수에 사용 시 가상으로 재정의되거나 상속받지 않은 함수만 사용 가능

 

constexpr int num = 100;

void test(int n)
{
	constexpr int c1 = num +1; // O
    constexpr int c2 = n + 1;  // X
    const int c3 = n + 7;      // O
}
  • 컴파일 타임에 모든 값들이 확정되어 있어야 한다.
  • 반면 const는 컴파일 타임에 정해져 있지 않아도 사용 가능

 

const int size = 3;
int arr[size];
  • 일반 변수나, const 객체가 초기화 되어 있더라도 컴파일러에 따라 런타임, 컴파일에 초기화 하는 순간이 다르기 때문에 위의 코드는 동작 하지 않는다.

 

constexpr int size = 3;
int arr[size];
  • constexpr을 사용하면 size가 컴파일 타임에 평가되어 위와 같은 코드가 동작 가능하다.

 

'C++ > C++' 카테고리의 다른 글

[C++] 멀티바이트, 유니코드  (0) 2022.11.14
[C++] wstring  (0) 2022.11.14
[C++] delete와 소멸자 ~class()  (0) 2022.10.13
[C++] 헤더 / 라이브러리에 관해  (1) 2022.10.11
[C++] 프로젝트 생성 관리  (0) 2022.10.11