智能指针之独占指针

2.unique_ptr-独占指针
    独占型的指针不允许其它的智能指针共享其内部的指针,不允许通过赋值将一个unique_ptr赋值给另外一个unique_ptr

unique_ptr<int> p1(new int(10));
unique_ptr<int> p2 = p1;//错误的,不能复制给一个独占的智能指针
unique_ptr<int> p3 = std::move(p1);//ok,可以通过函数返回给其它的unique_ptr,或者使用std::move转移指针,原来的指针不再拥有原来指针的所有权

  unique_ptr可以指向一个数组

unique_ptr<int[]> p5(new int[10]);
p5[9] = sizeof(p5);

  unique_ptr指定删除器

unique_ptr<int,std::function<void(int*)>> p6(new int(1),[&](int *p){delete p;});
    //或者自定义unique_ptr删除器
unique_ptr<int,myDeleter> p7(new int(1));

 

参考:《深入应用C++11:代码优化与工程级应用》

上一篇:ManualResetEvent的使用与介绍


下一篇:LC 828. Unique Letter String