C++ 智能指针用法

本文介绍了C++智能指针的作用,详细讲解了unique_ptr, shared_ptr和weak_ptr的特有操作,包括对象创建、释放、赋值和管理引用计数等方面,旨在帮助理解智能指针如何解决内存管理问题和避免循环引用。" 105590872,5730522,条件对抗网络与CycleGAN:图像到图像转换技术解析,"['计算机视觉', '深度学习', '机器学习', '神经网络', '图像处理']
摘要由CSDN通过智能技术生成
智能指针是为了解决什么问题?

https://blog.csdn.net/k346k346/article/details/81478223

以下是 unique_ptr 特有的操作:
  • unique_ptr u1 unique_ptr<T, D> u2 定义两个 unique_ptr 空指针,它们可以指向类型为 T 的对象。u1 使用 delete 来释放指针,u2 使用类型为 D 的可调用对象进行释放;
  • unique_ptr<T, D> u(d) 定义 unique_ptr 空指针,使用类型为 D 的可调用对象 d 进行对象释放;
  • u = nullptr 删除 u 所指向的对象,并使其称为空指针(只接收 nullptr 类型);
  • u.release() 交出 u 所指向对象的控制权,返回 p 所指向对象的内置指针,并使得 u 为空指针;
  • u.reset() 删除 u 所指向的对象;
  • u.reset(q) u.reset(nullptr) 删除 u 所指向的对象,并使得 u 指向内置指针所指向的对象,否则使得 u 为空指针;
以下是 shared_ptr 特有的操作:
  • make_shared(args) 返回一个类型为 T 的动态对象的智能指针,使用 args 进行初始化对象;
  • shared_ptrp(q) p 是 shared_ptr q 的拷贝,将增加 q 的引用计数,q 中指针必须可以转为 T*;
  • p = q p 和 q 是指向可转换指针的智能指针 shared_ptr。减少 p 的引用计数,并增加 q 的引用计数,当 p 的引用计数为 0 时,删除其所指向的动态对象的内存;
  • p.unique() 当 p 的引用计数是 1 时,返回 true,否则返回 false;
  • p.use_count() 返回 p 所指向对象的引用计数,可能是一个很慢的操作,主要用于调试目的;
以下是 weak_ptr 的常用操作:
  • weak_ptr w 创建 weak_ptr 的空指针,其指向 T 类型对象;
  • weak_ptr w(sp) 创建指向与 shared_ptr sp 所指向相同对象的 weak_ptr ,T 必须与 sp 所指向对象的类型可以相互转换;
  • w = p p 可以是 shared_ptr 或者 weak_ptr ,赋值后 w 指向与 p 一样的对象;
  • w.reset() 使得 w 为空指针;
  • w.use_count() 返回指向同一个对象的 shared_ptr 的个数;
  • w.expired() 如果没有 shared_ptr 指向对象时返回 true&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值