mirror of
https://github.com/CnTransGroup/EffectiveModernCppChinese.git
synced 2025-03-24 08:10:19 +08:00
item15: updating
This commit is contained in:
parent
c1ca31f546
commit
e30ef575b5
12
3.MovingToModernCpp/item15.md
Normal file
12
3.MovingToModernCpp/item15.md
Normal file
@ -0,0 +1,12 @@
|
||||
## Item 15:尽可能的使用constexpr
|
||||
条款 15:尽可能的使用constexpr
|
||||
|
||||
如果要颁一个C++11中最令人困惑的词的奖,**constexpr**可能会赢得这个奖。当用于对象上面,它本质上就是**const**的加强形式,但是用于函数上,它就有不同的意思了。斩断困惑是值得的做的,因为当**constexpr**符合你想表达的东西,你绝对会想用它。
|
||||
|
||||
从概念上来说,**constexpr**指示一个值不仅仅是常量,它还是编译期可知的。这个概念只
|
||||
是故事的一部分,因为当**constexpr**被用于函数的时候,事情就有一些细微差别了。
|
||||
为了避免我毁了结局带来的surprise,我现在只想说,你不能假设**constexpr**函数是**const**,也不能保证它们的(译注:返回)值是在编译期可知的。最有意思的是,这些是特性。关于**constexpr**函数返回的结果不需要是**const**,也不需要编译期可知这一点是良好的行为。
|
||||
|
||||
不过我们还是先从**constexpr**对象开始说起。这些对象,实际上,和**const**一样,它们是编译期可知的。(专业来说,它们的值在翻译期(translation)决议,所谓翻译不仅仅包含是编译(compilation)也包含链接(linking),除非你准备写C++的编译器和链接器,否则这些对你不会造成影响,所以你编程时无需担心,把这些**constexpr**对象值看做编译期决议也无妨的。)
|
||||
|
||||
编译期可知的值是保密的。它们可能被放到只读存储空间中,尤其是对于那些嵌入式系统的开发者,这个特性是相当重要的。
|
@ -24,8 +24,8 @@
|
||||
5. [Item 11:优先考虑使用deleted函数而非使用未定义的私有声明](https://github.com/racaljk/EffectiveModernCppChinese/blob/master/3.MovingToModernCpp/item11.md)
|
||||
6. [Item 12:使用override声明重载函数](https://github.com/racaljk/EffectiveModernCppChinese/blob/master/3.MovingToModernCpp/item12.md)
|
||||
7. [Item 13:优先考虑const_iterator而非iterator](https://github.com/racaljk/EffectiveModernCppChinese/blob/master/3.MovingToModernCpp/item13.md)
|
||||
8. [Item 14:如果函数不抛出异常请使用noexcept](https://github.com/racaljk/EffectiveModernCppChinese/blob/master/3.MovingToModernCpp/item14.md)_updating_
|
||||
9. Item 15:尽可能的使用constexpr
|
||||
8. [Item 14:如果函数不抛出异常请使用noexcept](https://github.com/racaljk/EffectiveModernCppChinese/blob/master/3.MovingToModernCpp/item14.md)
|
||||
9. [Item 15:尽可能的使用constexpr](https://github.com/racaljk/EffectiveModernCppChinese/blob/master/3.MovingToModernCpp/item15.md) _updating_
|
||||
10. Item 16:确保const成员函数线程安全
|
||||
11. Item 17:理解特殊成员函数函数的生成
|
||||
4. 智能指针
|
||||
|
Loading…
Reference in New Issue
Block a user