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:代码优化与工程级应用》