zoukankan      html  css  js  c++  java
  • Effective C++ 笔记(3)资源管理

    13、以对象管理资源

      (1)、为防止资源泄漏,请使用RAII对象,它们在构造函数中获得资源并在析构函数中释放资源

      (2)、使用智能指针。shared_ptr、auto_ptr

    14、在管理资源类中注意copying行为

      (1)、复制RAII对象必须一并复制它所管理的资源(内存、文件、锁),所以资源的coping行为取决于RAII对象的copying行为;

      (2)、普遍常见的RAII class copying行为是:禁止复制(继承Uncopyable)、采用引用计数法(shared_ptr),或者其他方法。

    15、在资源管理类中提供对原始资源的访问

      (1)、资源管理类中应该提供访问其原始资源的接口;

      (2)、显式转换(提供函数,如shared_ptr的get),隐式转换(重写operator)。一般显式比较安全,但隐式转换比较方便。

    16、成对使用new和delete时要采用相同的形式

      (1)、new-->delete

      (2)、new[]-->delete[]

    17、以独立语句将对象置入智能指针

      (1)、在单独的语句内以智能指针存储newed所得的对象,避免抛出异常时,造成难以察觉的资源泄漏。

    void processWidget(shared_ptr<Widget> pw, int priority);
    
    processWidget(new Widget, priority);//error shared_ptr的构造函数是explicit
    
    processWidget(shared_ptr<Widget>(new Widget), priority()); //error c++处理参数的次序不固定,并非从右到左。
    
    shared_ptr<Widget> pw(new Widget);
    processWidget(pw, priority()); //ok
  • 相关阅读:
    Wix 教程
    SQL插入數據變成?解決辦法
    DevExpress GridControl使用方法总结【轉】
    Javascript如何判断对象是否相等【轉】
    android StringBuffer类的使用
    Linux命令
    PHP解决中文乱码
    PHP防盗链技术
    0113进度条+ListView+ArrayList+Adapter用法
    Windows中32位(x86)和64位(x64)解释
  • 原文地址:https://www.cnblogs.com/quehualin/p/9223474.html
Copyright © 2011-2022 走看看