zoukankan      html  css  js  c++  java
  • RAII获取资源即初始化

    RAII--- resource acquisition is initialization 获取资源即初始化是一个在C++中简单技

    它利用C++对象的生命周期来管理资源,如内存、文件句柄、网络连接、同步对象等等。
    RAII的技术原理很简单:如果希望保持对某个重要资源的跟踪,那么创建一个对象,并将资源
    生命周期与资源的生命周期相关联。最简单的RAII形式是创建这样一个对象:构造函数中获取
    一份资源,析构函数中则释放资源。
    class Resource{}

    class ResourceHandle
    {
    public:
          explicit ResourceHandle( Resource* a ): m_pResource(a){}
          ~ResourceHandle(){ delete m_pResource; }
          Resource* Get(){ return m_pResource; }
        
    private:
        ResourceHandle( const ResourceHandle& );
        ResourceHandle& operator = ( const ResourceHandle& );
        static void* operator new( size_t nSize );

    private:
     Resource*  m_pResource;

    }


    使用的时候,一般把ResourceHandle声明为一个函数的局部对象,或者静态变量
    void fun()
    {
        SReourceHandle rHandle( new Resource );
         。。。
     
    }

    当函数结束的时候,Resource就会自动释放了。就算有异常,Resource也会正确释放


    就算分配资源的时候产生异常,也不会有资源泄露

  • 相关阅读:
    多条件查询
    BootStrap——BootStrap练习(栅格系统、组件、插件)
    BootStrap——栅格系统
    BootStrap——BootStrap插件
    BootStrap——BootStrap组件
    BootStrap——按钮、图片
    BootStrap——CSS
    BootStrap——新建BootStrap项目
    JQ——表单验证插件(validation)
    JQ——事件(表单、文档/窗口)
  • 原文地址:https://www.cnblogs.com/caoshenghe/p/1574052.html
Copyright © 2011-2022 走看看