![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++11
文章平均质量分 92
白菜彩虹怪鸟
这个作者很懒,什么都没留下…
展开
-
智能指针详解
这是因为,shared_ptr通过引用计数来管理资源,多个shared_ptr实例共享相同的资源,并且会增加引用计数。在类 B 的实例对象被析构的时候,内部的 aptr 也被析构,其对 A 对象的管理解除,内存的引用计数减为 1,当共享智能指针 ap 离开作用域之后,对 A 对象的管理也解除了,内存的引用计数减为 0,类 A 的实例对象被析构。在手动管理内存的时候会出现悬挂指针的问题,就是指向的内存已经被释放,但是指针的本身仍然保留,当我们再次访问这个指针的时候就会导致未定义的行为,可能会引发程序的崩溃。原创 2024-04-01 15:35:52 · 1395 阅读 · 0 评论 -
左值引用与右值引用
右值引用类型是独立于值的,一个右值引用作为函数参数的形参时,在函数内部转发该参数给内部其他函数时,他就变成了一个左值(当右值被命名是编译器会认为他是个左值),并不是原来的类型了。c++11添加了右值引用,却不能左值初始化右值引用,在一些特定的情况下免不了需要左值初始化右值引用(用左值调用移动构造),如果想要用左值初始化一个右值引用需要借助std::move() 函数。● 通过非右值(右值引用、左值、左值引用、常量右值引用、常量左值引用)推导T&& 或者auto&&得到的是一个左值引用类型。原创 2024-04-16 19:37:18 · 1180 阅读 · 1 评论