分类: C/C++
2018-08-26 15:36:12
《C++ Primer》(第五版)
VS2015/win7
是指值不会改变,而且在编译过程中就能得到计算结果.
例子:
const int a = 100; // (1) 常量表达式 const int b = a + 100; // (2) 常量表达式 const int sz = get_size(); // (3) 不是常量表达式,由于sz的值需要调用函数才能得出
c++11 新标准规定,允许变量声明constexpr类型。编译期间验证常量表达式。并在编译期间进行优化。
简单的表达式,例子:
constexpr int a = 10; //常量表达式 constexpr int b = a + 100; //常量表达式
使用函数
int size() { return 10 + 20; } constexpr int sz = size(); //编译期间报错,因为无法确定size是常量表达式。修改为如下即可:
constexpr int size() { return 10 + 20; } constexpr int sz = size(); // 常量表达式
constepr int size(int a, int b) { return a + b; } constexpr int sz = size(); // 常量表达式