C++11 constexpr 变量和 constexpr 函数

一、constexpr 变量

首先先了解一个概念:常量表达式

常量表达式:是值不会改变并且在编译过程就能得到计算结果的表达式

所以,换个角度想,字面值是属于常量表达式的

那什么是字面值呢?

很简单,比如 1, 2,3,4, "123", '1', nullptr 等等

所以,一个对象或者表达式是不是常量表达式是由它的数据类型初始值共同决定的


例如:

const int A = 20;     // A 是常量表达式
const int B = A + 1;  // B 是常量表达式
int C = 27;           // C 不是常量表达式,因为非 const
const int D = size(); // D 不是常量表达式,因为不是在编译期间获取到结果

在实际使用中,我想定义一个常量表达式

例如上边例子的 A 一样,但实际中,我们可能会像声明 D 一样的做法

当项目很复杂的时候,我们就分辨不出来一个初始值到底是不是我们认定的常量表达式

当然也有保险的方法

就是声明一个 const 变量来作为初始化

设定为我们认定的常量表达式

但这情况显得麻烦且不严谨了

为此

C++11 推出了 constexpr 变量

允许变量声明为

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值