拷贝、赋值与销毁
- 拷贝构造函数:
第一个参数是自身类类型引用,且任何额外参数都有默认值
- 等价的合成拷贝赋值运算符:
- 拷贝初始化:
其他情况:
非引用的函数对象参数传递
非引用的函数返回对象
使用容器调用insert或push操作
- 要求编译器生成合成版本:
- 阻止拷贝和赋值
1.定义删除的函数
2.声明为private,且不定义
交换操作
- swap:
优先调用类型自己定义的swap,其次调用std::swap
- 在赋值运算符(右值)中使用swap:
对象移动
右值引用:绑定到将要销毁的对象
- move:将左值转换为右值引用类型
可以对rr1进行赋值或销毁,但不能使用它的值
- 移动构造函数:
- 赋值运算符:
nonexcept:必须在声明和定义中都指定
- 移动迭代器:
解引用生成一个右值引用
- 引用限定符:
强制左侧运算对象是一个左值