您的位置:首页 > 其它

shared_ptr

2014-06-26 09:52 274 查看
 

// 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

请按任意键继续. . .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shared_ptr