const和constexpr最终会是同一件事吗?

刺柏

我只是读了答案

const vs constexpr关于变量

并且正在观看有关C ++ 11/14功能的Google Tech讨论,据说在将来,关于函数,constexpr可能不再是必需的,因为编译器将不断发展以自行解决它。最终,我知道Java编译器和JVM会努力工作,以找出构造后的类(或任何变量)是不可变的-无需您明确声明-并基于此事实进行各种邪恶的优化。

所以,这是一个问题:const和constexpr的命运最终将是同一回事吗?也就是说,即使不能保证编译器也可以进行运行时初始化等,但最终是否会(基本上)不这样做?发生这种情况时,其中一个关键字不会多余吗?(就像内联变得可能一样)?

沙菲克·雅格慕(Shafik Yaghmour)

不,两者都不会取代对方,他们的角色不同。Bjarne Stroustrup在C ++常见问题解答告诉我们constexpr不能替代const,并概述了每个功能的不同作用:

请注意,constexpr不是const的通用替代品(反之亦然):

  • const的主要功能是表达一个想法,即不能通过接口修改对象(即使该对象很可能通过其他接口修改)。碰巧的是,声明对象const为编译器提供了绝佳的优化机会。特别是,如果将一个对象声明为const并且未使用其地址,则编译器通常能够在编译时评估其初始化程序(尽管不能保证)并将该对象保留在其表中,而不是将其释放到生成的代码中。
  • constexpr的主要功能是扩展在编译时可以计算的范围,从而使这种计算类型安全。声明为constexpr的对象的初始值设定项在编译时进行评估;它们基本上是保存在编译器表中的值,并且仅在需要时才发出到生成的代码中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在iPad上显示一件事,在Apple TV上显示另一件事?

来自分类Dev

“ var”和“ variant”是同一件事吗?

来自分类Dev

延续单子和命令式单子在谈论同一件事吗?

来自分类Dev

JLabel将文本从一件事更改为另一件事

来自分类Dev

javax.persistence.transient和java.bean.transient会做同一件事吗?

来自分类Dev

如何选择一件事,如果条件为假,则选择另一件事

来自分类Dev

为什么javascript返回另一件事,而php又返回另一件事?

来自分类Dev

快速排序算法-做同一件事的方法有很多?

来自分类Dev

如何在同一件事上显示字符串和变量?

来自分类Dev

B.prototype = new A()和B.prototype = Object.create(A.prototype)是同一件事吗?

来自分类Dev

设备上的语音识别是一件事吗?

来自分类Dev

使用FROM子句而不是JOIN子句联接表是同一件事吗?

来自分类Dev

同一件事被打印两次-JS数组

来自分类Dev

0.0.0.0:0和*:*代表同一件事吗?

来自分类Dev

“哪个”报告一件事,实际命令是另一件事

来自分类Dev

android中的任务堆栈和后堆栈是同一件事吗

来自分类Dev

这两段代码代表同一件事吗?有性能差异吗?

来自分类Dev

战舰游戏AI猜同一件事

来自分类Dev

PC扬声器RFI。还是一件事吗?

来自分类Dev

同一件事立即冻结或起作用

来自分类Dev

使用env和export是同一件事吗?

来自分类Dev

不同目录中的相同名称是同一件事吗?

来自分类Dev

命令提示符和MS-DOS是同一件事吗?

来自分类Dev

bootloader和bootmanager是同一件事吗?

来自分类Dev

可以使用ADD和LDUR完成同一件事吗?

来自分类Dev

Windows用户只是一件事

来自分类Dev

XFS配额和linux配额是同一件事吗?

来自分类Dev

制作只做一件事的函数

来自分类Dev

我可以在 TypeScript 函数签名中将两个“任何”标记为同一件事吗?

Related 相关文章

  1. 1

    在iPad上显示一件事,在Apple TV上显示另一件事?

  2. 2

    “ var”和“ variant”是同一件事吗?

  3. 3

    延续单子和命令式单子在谈论同一件事吗?

  4. 4

    JLabel将文本从一件事更改为另一件事

  5. 5

    javax.persistence.transient和java.bean.transient会做同一件事吗?

  6. 6

    如何选择一件事,如果条件为假,则选择另一件事

  7. 7

    为什么javascript返回另一件事,而php又返回另一件事?

  8. 8

    快速排序算法-做同一件事的方法有很多?

  9. 9

    如何在同一件事上显示字符串和变量?

  10. 10

    B.prototype = new A()和B.prototype = Object.create(A.prototype)是同一件事吗?

  11. 11

    设备上的语音识别是一件事吗?

  12. 12

    使用FROM子句而不是JOIN子句联接表是同一件事吗?

  13. 13

    同一件事被打印两次-JS数组

  14. 14

    0.0.0.0:0和*:*代表同一件事吗?

  15. 15

    “哪个”报告一件事,实际命令是另一件事

  16. 16

    android中的任务堆栈和后堆栈是同一件事吗

  17. 17

    这两段代码代表同一件事吗?有性能差异吗?

  18. 18

    战舰游戏AI猜同一件事

  19. 19

    PC扬声器RFI。还是一件事吗?

  20. 20

    同一件事立即冻结或起作用

  21. 21

    使用env和export是同一件事吗?

  22. 22

    不同目录中的相同名称是同一件事吗?

  23. 23

    命令提示符和MS-DOS是同一件事吗?

  24. 24

    bootloader和bootmanager是同一件事吗?

  25. 25

    可以使用ADD和LDUR完成同一件事吗?

  26. 26

    Windows用户只是一件事

  27. 27

    XFS配额和linux配额是同一件事吗?

  28. 28

    制作只做一件事的函数

  29. 29

    我可以在 TypeScript 函数签名中将两个“任何”标记为同一件事吗?

热门标签

归档