C++笔记之copy-and-swap、自我赋值(Self-Assignment)、noexcept关键字
📅 2026/7/12 18:09:32
👁️ 阅读次数
📝 编程学习
C++笔记之copy-and-swap、自我赋值(Self-Assignment)、noexcept关键字
code review!
文章目录
- C++笔记之copy-and-swap、自我赋值(Self-Assignment)、noexcept关键字
- 1. copy-and-swap是什么?
- 1.1 定义与本质
- 1.2 目的与核心思想
- 1.3 三要素
- 1.4 典型实现
- 1.5 关键点
- 1.6 中文译名说明
- 2. 自我赋值(Self-Assignment)是什么?
- 2.1 定义
- 2.2 为何是问题
- 2.3 典型出错代码
- 2.4 常见解决方案
- 2.5 关键点
- 3. noexcept关键字是什么?
- 3.1 定义
- 3.2 两种用法
- 3.3 核心语义
- 3.4 用途与意义
- 3.5 与旧式 throw() 的关系
- 3.6 简单总结
1. copy-and-swap是什么?
1.1 定义与本质
Copy-and-Swap 是 C++ 中实现赋值操作符(operator=)的一种经典且优雅的编程范式。其核心本质是:通过"先拷贝一个临时副本,再与当前对象交换数据"的方式,完美实现赋值操作。
1.2 目的与核心思想
目的:以异常安全、简洁的方式实现拷贝赋值运算符(operator=),同时避免代码重复。
核心思想:利用拷贝构造函数创建一个临时副本,然后将该副本与*this的内部资源进行无异常的 swap,让临时对象在析构时带走旧资源。
1.3 三要素
- 拷贝构造函数(深拷贝资源)
- 析构函数(释放资源)
- 无异常的
swap成员函数(交换内部指针/数据,通常用std::swap对各成员逐一交换)
1.4 典型实现
class
编程学习
技术分享
实战经验