拷贝、赋值与销毁
- 拷贝构造函数:
第一个参数是自身类类型引用,且任何额外参数都有默认值
![]()
- 等价的合成拷贝赋值运算符:

- 拷贝初始化:

其他情况:
非引用的函数对象参数传递
非引用的函数返回对象
使用容器调用insert或push操作
- 要求编译器生成合成版本:

- 阻止拷贝和赋值
1.定义删除的函数

2.声明为private,且不定义
交换操作
- swap:

优先调用类型自己定义的swap,其次调用std::swap
- 在赋值运算符(右值)中使用swap:

对象移动
右值引用:绑定到将要销毁的对象
![]()
- move:将左值转换为右值引用类型
可以对rr1进行赋值或销毁,但不能使用它的值
![]()
- 移动构造函数:

- 赋值运算符:

nonexcept:必须在声明和定义中都指定
- 移动迭代器:
解引用生成一个右值引用

- 引用限定符:
强制左侧运算对象是一个左值

本文深入解析C++中对象的拷贝构造、拷贝赋值、销毁过程,以及移动语义的实现机制。探讨了如何正确地实现拷贝构造函数和拷贝赋值运算符,防止资源泄漏。同时,介绍了移动构造函数和移动赋值运算符的使用,以提高程序效率。

1523

被折叠的 条评论
为什么被折叠?



