c++primer要点-拷贝控制

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

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

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

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

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

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值