读书笔记《C++ Primer》第五版——第十三章 拷贝控制

来源:互联网 发布:unity3d天空盒神庙 编辑:程序博客网 时间:2024/06/07 21:28

1.使用=default来显示地要求编译器生成合成的拷贝控制函数
2.使用=delete来定义删除的函数
3.声明但不定义一个成员函数是合法的,调用一个未定义的成员将导致一个链接时错误
4.效率较好的swap函数定义应该如下:

void swap(A &a, A &b){    using std::swap;    swap(a.m, b.m); //每个swap应该都是未加限定的    //交换类型A的其他成员}

5.左值持久,右值短暂
6.变量是左值,所以不能将一个右值引用绑定到一个右值引用类型的变量上
7.可用move标准库函数获得绑定到左值上的右值引用,如:

int &&rr3 = std::move(rr1);

8.可以销毁一个一个移后源对象,也可以赋予它新值,但不能使用移后源对象的值
9.移动操作通常不应抛出任何异常,可用noexcept来通知编译器
10.移后源对象必须可析构
11.移动右值,拷贝左值,但如果没有移动构造函数,右值也被拷贝
12.移动迭代器的解引用返回右值引用
13.可调用标准库的make_move_iterator函数将一个普通迭代器转换为一个移动迭代器
14.可在参数列表后防止一个引用限定符莱限制该函数能否被左值或右值调用
15.对于&限定的函数,只能用于左值;对于&&限定的函数,只能用于右值
16.一个函数可以同时用const和引用限定,引用限定符必须跟随在const限定符之后

阅读全文
0 0
原创粉丝点击