Update others.rst

This commit is contained in:
YuZhang 2018-06-26 09:58:46 +08:00 committed by GitHub
parent 8738627a24
commit fe1e14ac5a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,7 +1,7 @@
5. 其他 C++ 特性
6. 其他 C++ 特性
----------------------------
5.1. 引用参数
6.1. 引用参数
~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -37,7 +37,7 @@
总之大多时候输入形参往往是 ``const T&``. 若用 ``const T*`` 说明输入另有处理。所以若您要用 ``const T*``, 则应有理有据,否则会害得读者误解。
5.2. 右值引用
6.2. 右值引用
~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -68,7 +68,7 @@
.. _function-overloading:
5.3. 函数重载
6.3. 函数重载
~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -99,7 +99,7 @@
如果您打算重载一个函数, 可以试试改在函数名里加上参数信息。例如,用 ``AppendString()````AppendInt()`` 等, 而不是一口气重载多个 ``Append()``.
5.4. 缺省参数
6.4. 缺省参数
~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -132,7 +132,7 @@
const AlphaNum &c = gEmptyAlphaNum,
const AlphaNum &d = gEmptyAlphaNum);
5.5. 变长数组和 alloca()
6.5. 变长数组和 alloca()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -151,7 +151,7 @@
改用更安全的分配器allocator就像 ``std::vector````std::unique_ptr<T[]>``.
5.6. 友元
6.6. 友元
~~~~~~~~~~~~~~~~
.. tip::
@ -164,7 +164,7 @@
.. _exceptions:
5.7. 异常
6.7. 异常
~~~~~~~~~~~~~~~~
.. tip::
@ -209,7 +209,7 @@
.. _RTTI:
5.8. 运行时类型识别
6.8. 运行时类型识别
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TODO
@ -270,7 +270,7 @@
不要去手工实现一个类似 RTTI 的方案. 反对 RTTI 的理由同样适用于这些方案, 比如带类型标签的类继承体系. 而且, 这些方案会掩盖你的真实意图.
5.9. 类型转换
6.9. 类型转换
~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -301,7 +301,7 @@
.. _streams:
5.10. 流
6.10. 流
~~~~~~~~~~~~~~
.. tip::
@ -354,7 +354,7 @@
每一种方式都是各有利弊, "没有最好, 只有更适合". 简单性原则告诫我们必须从中选择其一, 最后大多数决定采用 ``printf + read/write``.
5.11. 前置自增和自减
6.11. 前置自增和自减
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -377,7 +377,7 @@
对简单数值 (非对象), 两种都无所谓. 对迭代器和模板类型, 使用前置自增 (自减).
5.12. ``const`` 用法
6.12. ``const`` 用法
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -414,7 +414,7 @@
这是说, 我们提倡但不强制 ``const`` 在前. 但要保持代码的一致性! (Yang.Y 注: 也就是不要在一些地方把 ``const`` 写在类型前面, 在其他地方又写在后面, 确定一种写法, 然后保持一致.)
5.13. ``constexpr`` 用法
6.13. ``constexpr`` 用法
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -437,7 +437,7 @@
靠 constexpr 特性,方才实现了 C++ 在接口上打造真正常量机制的可能。好好用 constexpr 来定义真・常量以及支持常量的函数。避免复杂的函数定义以使其能够与constexpr一起使用。 千万别痴心妄想地想靠 constexpr 来强制代码「内联」。
5.14. 整型
6.14. 整型
~~~~~~~~~~~~~~~~~~
.. tip::
@ -482,7 +482,7 @@
因此, 使用断言来指出变量为非负数, 而不是使用无符号型!
5.15. 64 位下的可移植性
6.15. 64 位下的可移植性
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -544,7 +544,7 @@
.. _preprocessor-macros:
5.16. 预处理宏
6.16. 预处理宏
~~~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -565,7 +565,7 @@
- 不要试图使用展开后会导致 C++ 构造不稳定的宏, 不然也至少要附上文档说明其行为.
- 不要用 ``##`` 处理函数,类和变量的名字。
5.17. 0, ``nullptr````NULL``
6.17. 0, ``nullptr````NULL``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -578,7 +578,7 @@
字符 (串) 用 ``'\0'``, 不仅类型正确而且可读性好.
5.18. sizeof
6.18. sizeof
~~~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -604,7 +604,7 @@
return false;
}
5.19. auto
6.19. auto
~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -677,7 +677,7 @@
.. _braced-initializer-list:
5.20. 列表初始化
6.20. 列表初始化
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -767,7 +767,7 @@
.. _lambda-expressions:
5.21. Lambda 表达式
6.21. Lambda 表达式
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -805,7 +805,7 @@
.. _template-metaprogramming:
5.22. 模板编程
6.22. 模板编程
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. tip::
不要使用复杂的模板编程
@ -836,7 +836,7 @@
.. _boost:
5.23. Boost 库
6.23. Boost 库
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. tip::
@ -889,7 +889,7 @@
- `Array <http://www.boost.org/libs/array/>`_ : ``boost/array.hpp``, 改用 `std::array <http://en.cppreference.com/w/cpp/container/array>`_
5.24. C++11
6.24. C++11
~~~~~~~~~~~~~~~~~~~~~~
.. tip::