智能指针unique_ptr的用法

Glory ·
更新时间:2024-09-20
· 521 次阅读

  此文描述了智能指针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   对于一般的程序使用std::unique_ptr够了,如果是多线程方面,可能存在共同使用的问题,可以使用std::shared_ptr,注意不要引起循环引用。



UNIQUE

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章