constexpr
常量表达式是指值不会改变并且在编译过程就能是到计算结果的表达式。
一个对象是不是常量表达式由它的数据类型和初始值共同决定
int fun(){return 32; }上例中,max_files, limit, cexp_m都是常量表达式,但cei会编译出错,原因是因为ci并不是常量表达式,const对象不代表为constexpr
int main(int argc, char* argv[]) {
const int max_files = 20;
const int limit = max_files + 1;
constexpr int cexp_m = max_files + 1;
int i=0;
cout << "input i:" << endl;
cin >> i;
const int ci = i+1;
cout << "ci:" << ci <constexpr int cei = ci+1;
//constexpr int cei = fun();
return 0;
}
C++11允许将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。
声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化
用普通函数初始化会报编译错误;但可以用constexpr函数去初始化constexpr变量
【constexpr】constexpr函数的返回值可以不是常量,但返回值必须为常量表达式
推荐阅读
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- 正则表达式中增加变量
- sed及正则表达式
- Java8|Java8 Collections.sort()及Arrays.sort()中Lambda表达式及增强版Comparator的使用
- Java正则表达式的应用
- SQL|SQL基本功(五)--函数、谓词、CASE表达式
- Python--之正则表达式一基础
- C++|C++ 四种转型
- 变量与常量
- 正则表达式过滤掉数字广告