探索flutter框架开发的app在移动应用市场的潜力与挑战
837
2022-09-04
智能指针Smart Pointer 第二节 unique_ptr
unique_ptr是独享被管理对象指针所有权(owership)的智能指针。
unique_ptr对象封装一个原始指针,并负责其生命周期。
当该对象被销毁时,会在其析构函数中删除关联的原始指针。
在任何给定的时刻,只能有一个指针管理内存
当指针超出作用域时,内存自动释放
该类型指针不可copy,只可以move
三种创建方式
1.通过已有裸指针创建
2.通过new创建
3.通过std::make_unique创建(推荐)
unique_ptr可以通过get()获取地址
unique_ptr可以通过->调用成员函数
unique_ptr可以用通过*调用dereferencing
#include
#include
#include
using namespace std;
void f1() {
unique_ptr
cout<<*p< //unique_ptr //unique_ptr unique_ptr cout<<*p2< //cout<<*p< } 上面的代码就创建了一个unique_ptr。需要注意的是,unique_ptr没有复制构造函数,不支持普通的拷贝和赋值操作。因为unique_ptr独享被管理对象指针所有权,当p2, p3失去p的所有权时会释放对应资源,此时会执行两次delete p的操作。对于p2,p3对应的行,会提示报错 unique_ptr虽然不支持普通的拷贝和赋值操作,但却可以将所有权进行转移,使用std::move方法即可。 unique最常见的使用场景,就是替代原始指针,为动态申请的资源提供异常安全保证。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~