• 【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

  • 相关阅读:
    Spring Security 4
    JPA查询
    改进的冒泡算法
    Create User
    COM调用 – VB、PB
    J-Link clone问题
    修复山寨版的J-Link
    C# Web版报表
    HTML/CSS/Javascript代码在线压缩、格式化(美化)工具
    eclipse中字母大小写转换快捷键
  • 原文地址:https://www.cnblogs.com/elesos/p/2756291.html
Copyright © 2020-2023  润新知