notes/ch13.md
拷贝控制操作(copy control):
class Foo{ public: Foo(const Foo&); }string book = "9-99";=定义变量时。operator=的函数.Foo& operator=(const Foo&);static成员赋予左侧运算对象的对应成员。static数据成员。~Foo();delete运算符时。=default来显式地要求编译器生成合成的版本。=delete。private声明来阻止拷贝。swap的函数。swap而不是std::swap。string和shared_ptr类既可以支持移动也支持拷贝。IO类和unique_ptr类可以移动但不能拷贝。&&获得右值引用。move函数:
int &&rr2 = std::move(rr1);move告诉编译器,我们有一个左值,但我希望像右值一样处理它。move意味着:除了对rr1赋值或者销毁它外,我们将不再使用它。StrVec::StrVec(StrVec &&s) noexcept{}StrVec& StrVec::operator=(StrVec && rhs) noexcept{}make_move_iterator函数讲一个普通迭代器转换为一个移动迭代器。const T&,而另一个版本接受一个T&&。&,限定只能向可修改的左值赋值而不能向右值赋值。