const和constexpr的区别和constexpr的优化

本文深入探讨了C++中的constexpr关键字,它用于确保操作在编译期完成,以提高效率。constexpr不仅限定了常量在编译期的计算,还细化了const的作用。在C++中,constexpr函数会在可能的情况下于编译期求值,若参数在运行期确定,则行为与普通函数相同,并自动添加inline。此外,constexpr还帮助区分编译期和运行期常量,进一步优化了代码性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

constexpr主要做了两件事:

  • 让修饰的东西在编译期就做完,而不必等到运行期
  • 把const的作用细化

const并未区分出编译期常量和运行期常量,constexpr限定在了编译期常量。

一般来说编译期只是生成一些符号表,VM等等

但是修饰函数又有些特殊。
如果这个函数的实参是在运行期才能传入,那么这个constexpr是无效的,和普通函数一样

除此之外,被他修饰的函数隐式添加了一个inline关键字,减小了栈内存的消耗,提高了效率。

可以看看这篇博客关于栈空间调用函数的消耗

第二点细化const
在C里面,const只有只读的作用,而在C++中承担了常量的作用,因此,C++11把他拆分开来,把常量的作用分给constexpr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妖怪喜欢风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值