Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

게임 개발 메모장

[ C++ ] const 와 constexpr 용법 본문

언리얼 엔진/C++

[ C++ ] const 와 constexpr 용법

Dev_Moses 2024. 1. 2. 00:24

C++ const, constexpr

 

constexpr 이란


컴파일 시간 상수를 만드는 키워드

 

컴파일 시간에 결정되는 상수 값으로만 초기화 할 수 있다.

 

constexpr이 변수를 상수로 만들어 준다고 하는데 그럼 const와 똑같은데 무슨 차이가 있나?

상수에는 2가지 상수가 존재하는데
1. 컴파일 시간에 알 수 있는 상수.
2. 컴파일 시간에 알 수 없는 상수. (실행시간에 알 수 있는 실행시간 상수)

이렇게 두 종류의 상수가 존재한다.

 

컴파일 시간에 알 수 있는 상수를 컴파일 시간 상수 (compile-time constant)라고 하고,
컴파일 시간에 알 수 없는 상수 즉 실행시간에 알 수 있는 상수를

런타임 상수(runtime constant)라고 한다.

 

 

const는 컴파일 시간에 알 수 있는 상수와 컴파일 시간에 알 수 없는 상수

둘 다 사용할 수 있다.


반면 constexpr은 컴파일 시간에 알수 있는 컴파일 상수에서만

사용할 수 있다.

 

const가 constexpr를 포함한다고 생각 하면 된다.


컴파일 상수에는 constexpr을 사용하고 그 외의 상수에는

const를 사용하면 될 듯 하다.

 

 

 

 

이렇게 명확하게 숫자로 변수를 지정하는 num1, num3은 컴파일 시간 상수이고,
변수에 변수값을 대입하여 상수로 만드려는 num2, num4는 런타임 상수 이다.

 

constexpr은 컴파일 타임 상수에만 사용할 수 있으므로 num4에서 error

발생하게 되는 것 이다.

 

정리를 하자면

 

constexpr, const는 둘다 상수를 만들어주는 키워드이지만

 

const는 컴파일 시간, 실행시간 상수 모두 만들수 있고,

constexpr은 컴파일 시간 상수만 만들 수 있습니다.

 

그러므로 변수값으로 const를 사용할 것이 아니라면, 더 명확한 constexpr을 사용하자.

 

 

참고

https://www.youtube.com/watch?v=dOgLE21s3ZY&list=WL&index=171

 

'언리얼 엔진 > C++' 카테고리의 다른 글

[ C++ ] operator 대입연산자  (1) 2024.01.02
[ C++ ] String 에 대해서  (0) 2024.01.02
[ C++ ] 게임에서 동기와 비동기 예시  (0) 2024.01.01
[ C++ ] TTuple  (0) 2023.12.30
[ C++ ] L-Value / R-Value 래퍼런스  (0) 2023.12.29