shared_ptr

来源:互联网 发布:js event.target 编辑:程序博客网 时间:2024/04/20 18:38

 

// mem.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
//#include "../../../../../linux/mcsf/uih/include/external/boost/shared_ptr.hpp"
#include "boost/shared_ptr.hpp"

using namespace boost;

typedef shared_ptr<int> pInt;

class Shared
{
private:
    pInt pa;
public:
    Shared (pInt p): pa(p){}
    void print()
    {
        std::cout<<" pa.use_count() = "<<pa.use_count()<<std::endl
            <<" pa.value = "<<*pa<<std::endl;
    }
};
void print(pInt pa)
{
    std::cout<<" pa.use_count() = "<<pa.use_count()<<std::endl
        <<" pa.value = "<<*pa<<std::endl;
}


int _tmain(int argc, _TCHAR* argv[])
{
    shared_ptr<int> pa(new int(100));
    print(pa);
  
    std::cout<<"=================="<<std::endl;

    Shared s1(pa),s2(pa);
    s1.print();
    s2.print();

 

    shared_ptr<int> sp (new int(10));
    assert(sp);
    *sp = 100;
    assert(*sp == 100);
    shared_ptr<int> sp2 = sp;
    assert(sp == sp2);
    assert(sp2.use_count() == 2);
    sp2.reset(); // sp2 is null, but sp is still exist
    assert(!sp2);

 return 0;
}


 输出结果

 pa.use_count() = 2
 pa.value = 100
==================
 pa.use_count() = 3
 pa.value = 100
 pa.use_count() = 3
 pa.value = 100
请按任意键继续. . .

0 0
原创粉丝点击