Board logo

标题: std::unique_ptr [打印本页]

作者: admin    时间: 2018-7-2 15:14     标题: std::unique_ptr

1. unique_ptr来管理指针,一个原则:一个unique_ptr管理一个指针,一个指针只能被一个unique_ptr管,前者好理解,后者容易被忽视:
int * pi = new int;
std::unique_ptr<int> p1(pi);
std::unique_ptr<int> p2(pi); // 将运行时错误,将两个指针,交给两个 unique_ptr 来管理
作者: admin    时间: 2018-7-2 15:30

2. 为了这个原则,uniuqe_ptr,把复制构造函数,和复制赋值方法都删除了,
unique_ptr(const _Myt&) = delete;   // 复制构造函数
_Myt& operator=(const _Myt&) = delete;  // 复制赋值方法

3.  
std::unique_ptr<int> p3(p1);// 出错,复制初始化方法,被删,
p1 = p2; //  不能使用,复制赋值方法被删
p1 = std::unique_ptr<int>(pi); // 可以使用,调用移动赋值方法 unique_ptr<int> & operator=(unique_ptr<int>&& _Right)




欢迎光临 杰表技术论坛 (http://bbs.jatools.com/) Powered by Discuz! 6.1.0