C++标准库笔记 -- 智能指针之unique_ptr

  一个unique_ptr"拥有“他所指向的对象。与shared_ptr不同,某个时刻只能有一个unique_ptr指向一个给定的对象。当unique_ptr被销毁时,它所指向的对象也被销毁。uniptr_ptr表达的是一种独占的思想。

 

初始化

#include 
#include 

using namespace std;

int main()
{
    unique_ptr p1;               //!可指向一个double的unique_ptr
    unique_ptr p2(new int(56));     //!p2指向了一个值为42的int

    unique_ptr pstr(new string("strtest"));
//    unique_ptr pstrCopy(pstr); //!error: 不支持对象的拷贝
    unique_ptr pstrAssin;
//    pstrAssin = pstr                   //!error: uniptr不支持赋值
}

所有权转移

        虽然我们不能拷贝赋值unique_ptr,但是可以通过调用release或者set将指针的所有权从一个(非const)unique_ptr转移给一个unique_ptr

#include 
#include 

using namespace std;

class TEST
{
public:
    TEST(const string & name):_name(name)
    {
        cout<<"TEST:"<<_name< p1(new TEST("case_1"));
    unique_ptr p2(p1.release());          //将所有权从p1转移到p2,p1现在指向NULL。
    cout<<"--------------------"< p3(new TEST("case_2"));
    cout<<"--------------------"<

指向数组

#include 
#include 

using namespace std;

class ArrTest
{
public:
    ArrTest()
    {
        static int i = 0;
        _i = i;
        cout<<" ArrTest()"<<":"< p(new ArrTest[10]);
    cout<

 

你可能感兴趣的:(笔记)