mirror of
https://github.com/zh-google-styleguide/zh-google-styleguide.git
synced 2025-02-19 20:50:10 +08:00
others.rst: 新翻译章节「5.24. C++11」
This commit is contained in:
parent
f584bfd6c4
commit
e89c3112d7
@ -796,3 +796,29 @@
|
|||||||
|
|
||||||
5.24. C++11
|
5.24. C++11
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
适当用 C++11(前身是 C++0x)的库和语言扩展,在贵项目用 C++11 特性前三思下可移植性。
|
||||||
|
|
||||||
|
定义:
|
||||||
|
|
||||||
|
C++11 有众多语言和库上的`变革 <https://en.wikipedia.org/wiki/C%2B%2B11>`_。
|
||||||
|
|
||||||
|
优点:
|
||||||
|
|
||||||
|
在二〇一四年八月之前,C++11 一度是官方标准,被大多 C++ 编译器支持。它标准化很多我们早先就在用的 C++ 扩展,简化了不少操作,大大改善了性能和安全。
|
||||||
|
|
||||||
|
缺点:
|
||||||
|
|
||||||
|
C++11 相对于前身,复杂极了:1300 页 vs 800 页!很多开发者也不怎么熟悉它。于是从长远来看,前者特性对代码可读性以及维护代价难以预估。我们说不准什么时候采纳其特性,特别是在被迫依赖老实工具的项目上。
|
||||||
|
|
||||||
|
和 Boost 一样,有些 C++11 扩展提倡实则对可读性有害的编程实践——就像去除冗余检查(比如类型名)以帮助读者,或是鼓励模板原编程等等。有些扩展在功能上与原有机制冲突,容易招致困惑以及迁移代价。
|
||||||
|
|
||||||
|
决定:
|
||||||
|
|
||||||
|
C++11 特性除了个别情况下,可以用一用。除了本指南会有不少章节会加以讨若干 C++11 特性之外,以下特性最好不要用:
|
||||||
|
|
||||||
|
- 尾置返回类型,比如用 ``auto foo() -> int`` 代替 ``int foo()``. 为了兼容于现有代码的声明风格。
|
||||||
|
- 编译时合数 ``<ratio>``, 因为它涉及一个重模板的接口风格。
|
||||||
|
- ``<cfenv>`` 和 ``<fenv.h>` 头文件,因为编译器尚不支持。
|
||||||
|
- 默认 lambda 捕获。
|
||||||
|
Loading…
Reference in New Issue
Block a user