Boost::Shared_ptr初学

本文通过实例详细介绍了Boost库中的shared_ptr智能指针的使用方法及其引用计数机制。通过构造函数、拷贝构造及成员函数等展示了智能指针如何管理动态分配的内存,并在不同对象间共享同一资源。

#include "boost/shared_ptr.hpp"
#include <vector>
#include <iostream>


//boost的shared_ptr 是一种智能指针,
//可以根据其被引用的次数进行智能释放,当被引用次数为0的时候自动释放,
//这个功能和iphone上面编程,objective-c里的功能有所类似。


class shared
{
private:
boost::shared_ptr<int> p ; //声明一个成员,智能指针p,我们将准备让它指向一个int型的空间

public:
shared(boost::shared_ptr<int> p_):p(p_){} //构造函数(另一种构造方式)

void print()
{
std::cout<<"count:"<<p.use_count()<<"v="<<*p<<std::endl; //use_count即被引用次数
}
};


void print_func(boost::shared_ptr<int> p)
{
std::cout<<"count:"<<p.use_count()<<"v="<<*p<<std::endl;
}


int main()
{
boost::shared_ptr<int> p(new int(100));

std::cout<<p.use_count()<<std::endl; //刚被创建的时候,引用次数为1

shared s1(p),s2(p); //直接值传递进行拷贝,拷贝两次,引用次数多到3
s1.print();
s2.print();

*p=20; //改变所指向空间的内容
print_func(p); //这里又有一次值传递,所以这里引用次数达到4
s1.print(); //上面的函数执行完之后,退出,所以引用次数又回到3

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值