C++(13): 智能指针shared_ptr

1. 概述

        shared_ptr智能指针,本质是“离开作用域会自动调整(减小)引用计数,如果引用计数为0,则会调用析构函数”。这样一来,就进化成类似于int、float等的一种会被自动释放的类型。

2. 初始化智能指针

        初始化一个智能指针的方式比较多,可以构造一个空的智能指针,也可以通过调用new进行初始化,最推荐的还是通过make_shared<T>来构造。

        如下是几种构造方式。

(1)构造空的智能指针

        shared_ptr<T> ptr;

        就相当于一个 NULL 指针

(2)调用new

        从new操作符的返回值构造

        shared_ptr<T> ptr(new T());

(3)拷贝构造

        shared_ptr<T> ptr2(ptr1);

        使用拷贝构造函数的方法,会让引用计数加 1。

        shared_ptr 可以当作函数的参数传递,或者当作函数的返回值返回,这个时候其实也相当于使用拷贝构造函数。

(4)使用make_shared构造

        比较推荐使用make_shared辅助创建

        std::shared_ptr<T>foo = std::make_shared<T>(10); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值