const
const
를 선언함으로서 값을 고정할 수 있다.
실수를 줄일 수 있기 때문에 const 를 쓸 수 있는 상황에서는 무조건 사용하는 게 좋다.
아래와 같은 쓰임새가 있다.
1 | class Example |
constexpr
C++11 에 도입된 것으로, const 와 비슷하지만 constexpr
은 Compile time
에 값이 결정되기를 원할 때 사용한다. 또 compile time 에 값을 결정하는 방법으로는 템플릿 메타 프로그래밍
을 이용하는 방법이 있는데 가독성이나 사용성면에서나 constexpr 로 사용하는 것이 좋겠다.
그런데 함수를 constexpr 로 선언하더라도 compile time 에 결정될 수 있고 runtime 에 결정될 수도 있다. 이는 컴파일러의 어떤 평가 기준에 따라 결정 되는데 항상 compile time 에 결정되기 원하는 값이라면 리턴을 받는 변수를 constexpr 로 선언하면 된다.
연산량이 너무 많다면 compile time 에 결정하지 못할 수도 있다. (Compile error 발생)
아래 코드를 보면서 이해해보자.
1 | constexpr int Factorial(int n) |