重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在一个复杂系统中,很难(几乎肯定不能) 分辨一个初始值到底是不是常量表达式。当然可以定义一个 const 变量并把它的初始值设为我们认为的某个常量表达式,但在实际使用时,尽管要求如此却常常发现初始值并非常量表达式的情况。可以这么说,在此种情况下,对象的定义和使用根本就是两回事儿。
创新互联公司主营桦甸网站建设的网络公司,主营网站建设方案,App定制开发,桦甸h5成都小程序开发搭建,桦甸网站营销推广欢迎桦甸等地区企业咨询
C++11 新标准规定,允许将变量声明为 constexpr 类型以便由编译器来验证变量的值是否是一个常量表达式。声明为 constexpr 的变量一定是一个常量,而且必须用常量表达式初始化:
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元起,快前往官网查看详情吧