shared_ptr简单使用

一、shared_ptr 初始化

shared_ptr<int> p1=make_shared<int>();//初始化为0
*p1=20;//像平常指针一样使用
shared_ptr<int> p2=make_shared<int>(43);
shared_ptr<string> p3=make_shared<string>("hello");
shared_ptr<string> p4=make_shared<string>("");//初始化为空串
auto p5=make_shared<vector<int>>();//指向一个空的vector<int>
std::shared_ptr<int> ptr(new int(55));//利用动态指针初始化 智能指针

std::shared_ptr<int> ptr=new int(55);/这个时错误的写法

二、shared_ptr 拷贝和赋值

auto p=make_shared<int>(20);
auto q(p);//表示p和q 指向相同的对象,此对象有两个引用者

shared_ptr<int> p2(new int(34));
p2.reset(new int(1024));//P2 重新指向另一个对象,不能用等号

三、使用

std::initializer_list<std::string> il = { "lucy","lili","jack","rose" };
//string 的一个列表
shared_ptr<std::vector<string>> p = make_shared<std::vector<string>>(il);
//智能指针p 指向一个 il 列表初始化的vector<string>容器
auto it = p->begin();
for (it; it != p->end(); ++it)
{
	cout << *it << endl;
}

四、普通指针指向智能指针

std::shared_ptr<int> ptr(new int(55));
std::cout << ptr << std::endl;
int *p = ptr.get();
std::cout << p << std::endl;

经测试 两个地址时一样的,所以就通过get()函数实现了,普通指针指向智能指针的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值