
C++智能指针
文章平均质量分 76
小小波~
这个作者很懒,什么都没留下…
展开
-
weak_ptr
weak_ptr是为了配合shared_ptr而引入的一种智能指针,它指向一个由shared_ptr管理的对象而不影响所指对象的生命周期,即就是将一个weak_ptr绑定到shared_ptr不会改变shared_ptr的引用计数。不论是否有用weak_ptr指向一旦最后一个指向对象的shared_ptr被销毁,对象就会是释放。从这个角度看,weak_ptr更像是一个shared_ptr的助手,weak_ptr并不拥有对对象的管辖权,weak_ptr指向shared_ptr的目标也不会增加计数器值。原创 2023-06-11 17:14:35 · 3871 阅读 · 1 评论 -
shared_ptr
2.在赋值前要先将自生的资源移交出去,即就是将自身指向的引用计数减一,如果减一后引用计数为0,那么就调用删除器将资源删除,表示没有指针指向当前资源。2、当任何shared_ptr对象超出作用时,则在器析构函数中,将与资源对象关联的引用计数变为0,则表示没有其他shared_ptr对象与此资源对象关联,在这种情况下榻使用delete删除器删除该资源对象。析构的是当前指针,先判断是否为空,再引用计数减一,如果结果为0,则调用删除器先删除引用计数所致的对象,在删除指针。原创 2023-06-10 11:30:00 · 4254 阅读 · 0 评论 -
unique_ptr 删除器
1.首先,模板给出两个参数,一个是要指向对象类型,另一个是删除器类型,这个删除器是泛 化版本删除器。4.在析构函数中,如果指针不为nullptr,则调用删除器,并将指针指向nullptr。3.模拟unique_ptr的特性,不能拷贝构造和赋值构造,所以将这两个函数删除。在这个模板类中,实现其删除仿函数,实现的是可以删除单独的堆区对象。2.私有成员有两个,一个是指针,一个是删除器成员。构造的指针可以指向多个参数的对象,再构造时传入的参数可变。让当前指针指向函数传递进来的参数所指向的对象;原创 2023-06-10 10:30:00 · 449 阅读 · 0 评论 -
Unique_ptr
一、unique_ptrunique_ ptr实现了独享被管理对象指针的概念,这意味这它可确保一个对象和其对应的资源同一时间只被一个unique_ ptr对象拥有。一旦拥有者 被销毁或者变成empty或者开始拥有另一个对象的地址,先前拥有的那个对象就会被销毁,其任何相应资源亦会被释放。1、unique_ptr对象不能进行复制操作只能进行移动操作。2、unique是独特的、唯一的意思,故名思议,unique_ptr可以\"独占\"地拥有它所指向的对象。原创 2023-06-10 10:15:00 · 1128 阅读 · 0 评论 -
C++:什么是RAII?|智能指针
这里的资源主要是指操作系统中有限的东西如内存(heap)、网络套接字,互斥量,文件句柄等等,局部对象是指存储在栈的对象,它的生命周期是由操作系统来管理的,无需人工介入。从该示例可以看出,当我们在fun函数中声明一个局部对象的时候,会自动调用构造函数进行对象的初始化,当整个fun函数执行完成之后,自动调用析构函数来销毁对象,整个过程无需人工介入,由操作系统自动完成,于是自然联想到,当我们在使用资源的时候,在构造函数中进行初始化,在析构函数中进行销毁。智能指针虽然很智能,但容易被误用,智能也是有代价的。原创 2023-06-10 10:00:00 · 5416 阅读 · 2 评论