c++11中的智能指针

有4个:auto_ptr, shared_ptr,unique_ptr,weak_ptr。
auto_ptr98
0.标准中被提出。但是有三个问题导致已经被弃用。
1.非常容易失去所有权,只要是经过函数传递,那么就会失去所有权,变成野指针;
2.不能和STL一同使用;
3.不能用它指向new出来的数组。

shared_ptr:
1.shared_ptr是通过引用计数的方式来实现的;
2.与裸指针直接配合使用时容易出现崩溃的情况;
3.容易造成循环引用;
weak_ptr :
1.这种智能指针出现的原因是为了解决shared_ptr的循环包含问题;
2.方法是通过强弱引用的办法来进行判断;
unique_ptr:
0.是为了解决auto_ptr而出现;
1.必须使用直接初始化;
2.这种ptr为了保持唯一性,没有实现拷贝构造和赋值运算符;
3.如果想在STL中,或者用作函数形参,需要跟std::move配合使用:void fun(std::move(ptr));

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值