智能指针unique_ptr用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能指针unique_ptr用法相关的知识,希望对你有一定的参考价值。

  unique_ptr是独占型的智能指针,它不允许其他的智能指针共享其内部的指针,不允许通过赋值将一个unique_ptr赋值给另一个unique_ptr,如下面错误用法:

    std::unique_ptr<T> myPtr(new T);
    std::unique_ptr<T> myOtherPtr = myPtr; // error

  但是unique_ptr允许通过函数返回给其他的unique_ptr,还可以通过std::move来转移到其他的unique_ptr,注意,这时它本身就不再拥有原来指针的所有权了。相比于auto_ptr而言,unique_ptr是显示的转移,而不是莫名其妙的报废,因为auto_ptr调用拷贝构造函数后,原来的对象就失效了。

    std::unique_ptr<T> myPtr(new T);
    std::unique_ptr<T> myOtherPtr = std::move(myPtr); // ok

  

以上是关于智能指针unique_ptr用法的主要内容,如果未能解决你的问题,请参考以下文章

第20课 unique_ptr独占型智能指针

面试———智能指针

C++11 unique_ptr智能指针详解

C++11 weak_ptr智能指针(一看即懂)

C++笔记-auto_ptr&unique_ptr&shared_ptr&shared_ptr基本用法

C++笔记-auto_ptr&unique_ptr&shared_ptr&shared_ptr基本用法