释放所有权,并返回指针。 void swap(unique_ptr& __u) noexcept voidswap(unique_ptr&__u)noexcept{using std::swap;swap(_M_t,__u._M_t);} 交換兩個unqiue_ptr指向的指针
#include<memory>intmain(){// 创建一个包含5个int的数组std::unique_ptr<int[]>arr(newint[5]);// 获取原始指针数组int*rawPtr=arr.get();// 使用原始指针数组进行操作for(inti=0;i<5;++i){rawPtr[i]=i;}// 打印数组元素for(inti=0;i<5;++i){std::cout<<rawPtr[i]<<" ";}retu...
异常安全:即使发生异常,std::unique_ptr也可以保证资源的正确释放。 轻量级:std::unique_ptr通常与原始指针具有相同的大小和性能,因为它不需要支持引用计数。 可定制性:可以通过提供自定义删除器来扩展std::unique_ptr的行为。 缺点 不支持共享所有权:std::unique_ptr不允许多个指针共享对同一资源的所有权。如果需要...
unique_ptr可以指向一个数组 unique_ptr需要确定删除器的类型 unique_ptr<T>my_ptr(newT); unique_ptr<T> my_other_ptr = my_ptr;// 报错,不能复制 move转移 unique_ptr不允许复制,但可以通过函数将所有权转移给其他的unique_ptr,通过std::move来转移到其他的unique_ptr,这样它本身就不再拥有原来指针的所有...
parray[1] =1;//与shared_ptr 指向数组的情况类似//注意:对于定义内容是数组的,没有解引用运算符 *parray[0] = 10; 这种写法是不对的 5、get() 返回智能指针保存的裸指针,这个裸指针不能手动delete 否则会影响原来unique_ptr 所指对象 6、转化成shared_ptr 类型 ...
std::unique_ptr<int> pInt(new int(10));//在堆上创建一个10个int元素的数组 std::unique_ptr<int> pInt = std::make_unique<int>(10); //调用make_unique来构建对象实例 unique_ptr虽然是一个对象,但其实这个对象在实例化上占用的内存大小只有一个指针大小,且这个指针指向在堆上分配的对象。可以看出...
不支持复制构造函数和赋值操作符,但可以通过转移语义(move semantics)进行移动构造和移动赋值,转移过程中原unique_ptr变为空指针,所有权转移到新unique_ptr。 可以直接或间接管理非数组类型以及数组类型。 成员函数: release():释放所有权,返回指向对象的原始指针,之后unique_ptr变为空。
shared_ptr所指向的对象可以有多个其他shared_ptr智能指针 而unique_ptr所指向的对象只能有一个unique_ptr指针,也就是自己。当unique_ptr被销毁时,它所指向的对象也被销毁 二、unique_ptr类的初始化 unique_ptr指针需要绑定到一个new返回的指针上,并且不能直接将new的结果用赋值运算符“=”赋值给unique_ptr ...
《现代C++编程入门》第33集:智能指针智能唯一指针unique_ptr的声明初始化及简单使用。——《刚哥伴读会》对现代C++编程感兴趣的朋友,欢迎加入我的伴读会。, 视频播放量 1689、弹幕量 0、点赞数 47、投硬币枚数 2、收藏人数 28、转发人数 1, 视频作者 刚哥伴读会, 作者简介
unique_ptr 是一种独占所有权的智能指针,即同一时间只能有一个 unique_ptr 指向某个对象。当 unique_ptr 被销毁时(例如超出作用域或被重置),它所指向的对象也会被自动删除。这种特性使得 unique_ptr 非常适用于管理在堆上动态分配的单个对象。二、设计自定义的unique_ptr类 在实现自定义的 unique_ptr 之前,...