专业财税服务推荐

精选优质财税服务,为企业提供专业、可靠的财税解决方案,助力企业健康发展

零报税代理记账
零申报代理记账
报税做账算帐财务报表老会计做账
代理记账
咨询微信:lhy_happyday
工商营业执照年度年报年检公示
全国个体、企业、公司、合作社工商年审年报服务!
个体/10元/次 企业/20元/次
咨询微信:lhy_happyday
财税咨询服务
一对一专业财税咨询,解决企业财税难题,提供定制方案
咨询微信:lhy_happyday
财务分析服务
小规模个体报税0申报税务年报工商年报月报季报报税代理记账
咨询微信:lhy_happyday
立即咨询专业财税顾问
微信号: lhy_happyday
会计从业9年,管理多家个体工商、小规模、一般纳税人等企业的财务、税务等相关工作!。
扫码或搜索添加微信,备注"财税咨询"获取专属优惠
知方号 知方号

一文详解C++11的三种智能指针 nullptr怎么读

一文详解C++11的三种智能指针

一文详解C++11的三种智能指针 一、三种智能指针的关系概述二、unique_ptr三、shared_ptr四、weak_ptr

一、三种智能指针的关系概述

在C++11中出现三种智能指针,分别是unique_ptr、shared_ptr、weak_ptr。这三种智能指针分别有各自的应用场景,同时这些应用场景是有相互联系的。

总的来说:

1. unique_ptr的出现,在一定程度上解决了裸指针使用完没有及时释放导致的内存泄漏问题,但多个unique_ptr不能指向同一资源;

2. shared_ptr的出现,解决了unique_ptr不能指向同一资源的问题。它的特点是引用计数不为0,就坚决不释放资源。这又导致了另一个问题:交叉引用导致资源无法释放,又会内存泄漏;

3. weak_ptr的特点是引用对象时引用计数不增加,但自能成为资源的观察者,无法使用资源。如果要使用资源,必须升级为shared_ptr。weak_ptr解决了shared_ptr交叉引用的问题。

二、unique_ptr

和名字一样,unique_ptr的特点就是“独占”的意思,多个unique_ptr无法指向同一对象。相比于裸指针,unique_ptr的最大优势当然是超出作用域时会自动释放资源。其实unique_ptr解决的并不只是资源自动释放的问题。在C++11之前还有auto_ptr、scope_ptr这两种类型的指针,unique_ptr在资源自动释放的同时也解决了两个指针的拷贝、赋值问题(指针的浅拷贝问题)。

假设有下面的代码:

#include #include int main() {std::auto_ptr p1(new int(100));std::auto_ptr p2(p1); // 拷贝构造std::cout addRef();return *this;}T& operator*() {return *_ptr;}T* operator->() {return _ptr;}// 返回引用计数int use_count() {return _pRefCnt->_count;}private:T* _ptr;RefCnt* _pRefCnt;};int main() {CSmartPtr p1(new int(100));std::cout

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。