[C++ 11] constexpr
const
상수 변수는 정의할 때 초기화(initialization)해야 하며, 할당(assignment)을 통해 값을 변경할 수 없다.
constexpr
C++에는 두 가지의 상수가 있다.
#include <iostream>
using namespace std;
int main()
{
const int my_const(123); // 컴파일 타임 상수
int number;
cin >> number;
const int special_number(number); // 런타임 상수
return 0;
}
special_number
는 사용자가 값을 입력해야 그떄서야 상수의 값이 초기화 된다.
my_const
처럼 컴파일 할 때 이미 값이 결정이 되는 것을 컴파일 타임 상수(compile-time constant)
라 부르고, special_number
처럼 런타임에 결정이 결정 되는 것은 런타임 상수(runtime constant)
라 부른다.
#include <iostream>
using namespace std;
int main()
{
// 컴파일 타임 상수 명시화
constexpr int my_const(123);
int number;
cin >> number;
const int special_number(number);
return 0;
}
이렇게 상수의 값이 컴파일 할 때 결정되는지 아니면 런타임 때 결정되는 지 헷갈리기 쉽다. 그래서 C++ 11에 constexpr
이라는 것이 생겼다.
constexpr
을 붙이면 컴파일 할 때 값이 완전히 결정된다는 것을 뜻한다.
References
- 홍정모의 따라하며 배우는 C++
- https://boycoding.tistory.com/156
Author And Source
이 문제에 관하여([C++ 11] constexpr), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@t1won/C-11-constexpr저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)