const
和constexpr
constexpr
常量表达式:是指值不会改变且在编译期间就可以计算处结果的表达式
常量表达式是由
- 数据类型
- 数据初始值
决定的。
int a = 1
a 不是一个常量表达式,因为它的数据类型不是常量
const int b = get_val()
b不是一个常量表达式,因为它的初始值不是常量
由于使用const
不能确定一个表达式是不是常量,因此C++11使用constexpr
修饰符,可以让编译器在编译期间检查一个表达式是不是常量。