C++ constexpr 常量表达式

C++11引入了constexpr关键字,用于创建编译期可计算的常量表达式,以优化代码并确保编译器进行更大力度的优化。constexpr可以用于函数、构造函数和类等,但要求在整个函数体内的计算结果必须是常量。函数必须有定义,且返回值不能为void,通常仅允许一条return语句(C++14放宽了限制)。constexpr类需要有constexpr构造函数,成员变量只能在初始化列表中初始化,且成员都是constexpr。const和constexpr一起使用时,用于指针场景,确保指针指向的常量是安全的。
摘要由CSDN通过智能技术生成

概括

在C++11中引入了 constexpr 关键字. 意思是常量表达式, 详细来说就是在编译期可求值的表达式. 可以修饰表达式, 函数, 构造函数, 类等… 可以让编译器做出尺度更大的优化.


常量表达式的概念

这个关键字是为了解决以前的 const 关键字带来的一些问题, 其实在代码实战中 const 显然是只有readonly只读这个概念, 其在很多场合上并不符合逻辑常量这个概念, 就比如说:

const int f(){
   
	return 1;
}
int main(){
   
	int arr[f()];
	return 0;
}
// 会报错

上述这个代码, 我们会得到报错: 函数调用在常量表达式中必须具有常量值表达式的计算结果不是常数 .
然而在逻辑上, 上面这个函数返回的明显是一个逻辑上的常量.

常量表达式函数
而在使用了constexpr之后, 编译器就会大胆地对f()进行优化, 比如说直接内联了它, 而不需要等到运行时候才去计算

constexpr 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值