From 43e52cba87a6d436824c198ea0325ad7df018140 Mon Sep 17 00:00:00 2001 From: FeignClaims Date: Wed, 20 Mar 2024 00:01:49 +0800 Subject: [PATCH] =?UTF-8?q?[cpp]=20=E6=98=8E=E7=A1=AE=20copy-and-swap=20?= =?UTF-8?q?=E4=B8=AD=E4=BA=A4=E6=8D=A2=E5=87=BD=E6=95=B0=E6=98=AF=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- faq/copy_assignment_define/main.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) 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