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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值