复制控制的内容
复制(拷贝)控制:拷贝构造、拷贝赋值、移动 构造、移动赋值、析构
一般来说,用户需要定义的场景是:
1 析构函数 => 拷贝 + 赋值
需要析构的类也基本上需要拷贝和赋值
2 拷贝<=>赋值
需要拷贝的类也需要赋值
3 default
我们要求编译器生成合成版本,这通常是值类型的类
4 delete 阻止拷贝
被删除的函数是 指我们声明了这个函数,但是不可以以任何形式调用
C++11对象移动
1 很多情况下对象被创建还没怎么使用就被释放了,尤其是容器或者大型 对象,这种代价是很高的。
2 有些类包含了不能共享的资源,比如unique_ptr,最好是移动对象
右值引用 rvalue reference
右值引用只能 绑定到一个即将被 销毁的对象,为的就是偷梁换柱,移动它的资源。
1 左值表示对象的身份;右值表示对象的值。
2 左值持久;右值短暂。
3 变量是左值。
4 左值总是可以转换为右值引用类型。