#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
}
Boost::Shared_ptr初学
最新推荐文章于 2024-07-14 13:39:50 发布