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

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

bootloader和bootmanager是同一件事吗?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

战舰游戏AI猜同一件事

来自分类Dev

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

来自分类Dev

Windows用户只是一件事

来自分类Dev

制作只做一件事的函数

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

    bootloader和bootmanager是同一件事吗?

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

    战舰游戏AI猜同一件事

  20. 20

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

  21. 21

    Windows用户只是一件事

  22. 22

    制作只做一件事的函数

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

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

  29. 29

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

热门标签

归档