diff --git a/faq/copy_assignment_define/main.rst b/faq/copy_assignment_define/main.rst index f6584e9b..c24789b2 100644 --- a/faq/copy_assignment_define/main.rst +++ b/faq/copy_assignment_define/main.rst @@ -8,6 +8,7 @@ copy-and-swap: 拷贝赋值函数的简单实现 .. code-block:: cpp :linenos: + :caption: 拷贝赋值函数 Widget& operator=(Widget const& other) { Widget temp(other); // 拷贝 other 到 temp @@ -15,6 +16,15 @@ copy-and-swap: 拷贝赋值函数的简单实现 return *this; } // temp 的析构函数将会对交换来的 *this 内容完成必要的清理 +.. code-block:: cpp + :linenos: + :caption: :cpp:`swap` 函数 + + // 如果是 C++11 及以后, 加上 noexcept 表示不会抛出异常 ↓ + friend void swap(Widget& lhs, Widget& rhs) noexcept { + /* 交换 lhs 和 rhs 的所有成员 */ + } + .. admonition:: 相关核心准则 :class: coreguidelines