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 |