C++ 智能指针

C++ 智能指针,第1张

shared_ptr
// 创建空的智能指针;内部的智能计数器为0,而不是1
std::shared_ptr<int> p1;
std::shared_ptr<int> p2(nullptr);

// 创建的时候,指明其指向
std::shared_ptr<int> p3(new int(10));
std::shared_ptr<int> p4 = std::make_shared<int>(10);

// 调用拷贝构造函数进行赋值
std::shared_ptr<int> p4 = p3; // p4(p3);
p4.reset(); // 将当前智能对象中的引用计数器 - 1;将该对象同时设置为一个空指针
p4.get();	// 获取该智能指针指向的普通指针
weak_ptr

只能和 shared_ptr 相互配合使用;借助 weak_ptr 类型的指针我们可以获取到 shared_ptr 指针的一些状态信息;比如有多少指向相同的 shared_ptr 指针、shared_ptr 指针指向的堆内存是否已经释放。


std::shared_ptr<int> sp1(new int(10));
std::shared_ptr<int> sp2(sp1);
// 创建对应的weak_ptr 数据
std::weak_ptr<int> wp(sp2);
//释放 sp2
sp2.reset();

// 借助 lock() 函数,返回一个和 wp 同指向的 shared_ptr 类型指针,获取其存储的数据
cout << *(wp.lock()) << endl; // 也就是获取 sp1 指针,来获取其内部存储的数据
unique_ptr

不与其他的同类型的指针共享该块内存空间。


引用计数只能为1

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/634927.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-16
下一篇 2022-04-16

发表评论

登录后才能评论

评论列表(0条)

保存