关闭

c++primer要点-拷贝控制

139人阅读 评论(0) 收藏 举报
分类:

1.=default 显式要求编译器生成合成版本;=delete 定义为删除的函数阻止拷贝。

2.右值引用只能绑定到将要销毁的对象;std::move 获得绑定到左值上的右值引用

  移动构造函数的第一个参数应该是该类型的右值引用,移动操作不应抛出异常,可以指明noexcept承诺。标准库容器能对异常发生时其自身行为提供保障。例如,vector的push_back可能需要移动元素。当vector知道元素的移动构造函数不会抛出异常,就可以使用。否则只能使用拷贝构造函数。

  当一个类同时有拷贝和移动构造函数,编译器使用普通的函数匹配规则,移动右值,拷贝左值;当只有拷贝构造函数,则通过拷贝构造函数来“移动”

  make_move_iterator将普通迭代器转换成移动迭代器,移动迭代器解引用生成右值引用

  有时我们希望强制左侧运算对象是个左值,可以在成员函数参数列表后放置一个引用限定符&或&&;引用限定符也可以区分重载版本;如果定义两个或以上相同名字和参数列表的成员函数,就必须所有函数都加引用限定符,或都不加

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3980次
    • 积分:282
    • 等级:
    • 排名:千里之外
    • 原创:25篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档