constexpr

常量表达式是指值不会改变并且在编译过程就能是到计算结果的表达式。
一个对象是不是常量表达式由它的数据类型和初始值共同决定

int fun(){return 32;}
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 <<endl;
constexpr int cei = ci+1;
//constexpr int cei = fun();
return 0;
}

上例中,max_files, limit, cexp_m都是常量表达式,但cei会编译出错,原因是因为ci并不是常量表达式,const对象不代表为constexpr
C++11允许将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。
声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化
用普通函数初始化会报编译错误;但可以用constexpr函数去初始化constexpr变量

constexpr函数的返回值可以不是常量,但返回值必须为常量表达式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容