C++11智能指针,强制转换,绑定函数----C++基础(第五期)

本文详细介绍了C++11中的智能指针(unique_ptr,shared_ptr,weak_ptr)以及它们的特点,包括独占和共享所有权、自定义释放机制、C++强制转换(如const_cast,static_cast,dynamic_cast,reinterpret_cast),可变参数模板、bind函数和function的使用,以及匿名函数的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++11 智能指针

智能指针实质

实质:一个模板类(在堆上),只有一个成员----即传送进来的原始指针。

头文件#include<memory>

独占智能指针

该指针所指向的地址只能由此指针去访问,不能指针值传递,也不能拷贝构造。

int *p=new int;
*p=2;
unique_ptr<int>h(p);   //独占智能指针h,  原始指针p
//*h与*p所指地址一致。

unique_ptr<int>k(new int);

*h.get();   //获得原始指针,暂时获得,原智能指针不变
*h.release();    //获得原始指针,并将原来的智能指针置空

unique_ptr<int>h1; ~~h1=h;~~   
//这是错误的,独占智能指针不能值传递
h.reset();  //释放掉指针所占资源
h.reset(new int(3));  //释放掉指针所占资源,
                      //并重新申请资源,并赋值为3
h=nullptr;     //h置空,自动释放掉之前new的空间

int *p= new int[2];   //普通的指针数组
unique_ptr<int[]>p2(new int[2]); //独占智能指针数组
共享智能指针

多个指针可以指向同一个地址,其内部有计数(k2.use_count();)-----表示当前资源被多少指针引用,当计数为0时;自动释放此资源。

shared_ptr<int>K2(new int(20));

make_shared<指针类型>指针变量名(所指地址中存放的内容)
<----->shared_ptr<类型>指针变量名(new 类型(内容))

//指向一个值为10个9的string类型的shared_ptr 
shared_ptr
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

freejackman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值