C++关键字constexpr-创新互联

在一个复杂系统中,很难(几乎肯定不能) 分辨一个初始值到底是不是常量表达式。当然可以定义一个 const 变量并把它的初始值设为我们认为的某个常量表达式,但在实际使用时,尽管要求如此却常常发现初始值并非常量表达式的情况。可以这么说,在此种情况下,对象的定义和使用根本就是两回事儿。
C++11 新标准规定,允许将变量声明为 constexpr 类型以便由编译器来验证变量的值是否是一个常量表达式。声明为 constexpr 的变量一定是一个常量,而且必须用常量表达式初始化:

创新互联公司主营桦甸网站建设的网络公司,主营网站建设方案,App定制开发,桦甸h5成都小程序开发搭建,桦甸网站营销推广欢迎桦甸等地区企业咨询
constexpr int mf = 20;  // 20 是常量表达式

constexpr int limit = mf + 1;  //mf + 1是常量表达式

constexpr int sz = size();
// 只有当 size 是一个 constexpr 函数时
// 才是一条正确的声明语句

尽管不能使用普通函数作为 constexpr 变量的初始值,但是正如 6.5.2 节(第 214 页)将要介绍的,新标准允许定义一种特殊的 constexpr 函数。这种函数应该足够简单以使得编译时就可以计算其结果,这样就能用 constexpr 函数去初始化 constexpr 变量了

总结:

一般来说,如果你认定变量是一个常量表达式,那就把它声明成 constexpr类型。

注意:

必须明确一点,在 constexpr 声明中如果定义了一个指针,限定符 constexpr 仅对指针有效,与指针所指的对象无关:

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章题目:C++关键字constexpr-创新互联
浏览路径:http://ybzwz.com/article/hojsc.html