【Boost】系列02:内存管理之scoped_ptr智能指针

智能指针,stl中有auto_ptr,boost的smart_ptr库有6种:

scoped_ptr,scoped_array,shared_ptr,shared_array,weak_ptr和intrusive_ptr.

scoped_ptr的拷贝构造函数和赋值操作符声明为私有,以禁止对智能指针的复制。

例1:

#include <boost/smart_ptr.hpp>

#include <iostream>

#include <string>

using namespace std;

using namespace boost;



int main()

{

    scoped_ptr<string> sps(new string("Hello Boost"));

    cout<<sps->size()<<endl;    

    cout<<*sps<<endl;

    return 0;

}

输出

11

Hello Boost

例2:

#include <boost/smart_ptr.hpp>

#include <iostream>

#include <string>

using namespace std;

using namespace boost;

struct tag_file

{

    tag_file(const char *file_name)

    {

        cout<<"open file:"<<file_name<<endl;

    }

    ~tag_file()

    {

        cout<<"close file"<<endl;

    }



};

int main()

{

    scoped_ptr<int> spi(new int);

    if (spi)  //用bool语境测试

    {

        *spi = 100;

        cout<<*spi<<endl;

    }

    spi.reset();

    assert(spi == 0);

    if (!spi)

    {

        cout<<"scoped_ptr == null"<<endl;

    }

    scoped_ptr<tag_file> spf(new tag_file("a.txt"));

    

    return 0;

}

输出

100

scoped_ptr == null

open file:a.txt

close file

你可能感兴趣的:(scope)