zoukankan      html  css  js  c++  java
  • Effective C++学习笔记(三)

    资源管理

    条款十三 以对象管理资源,防止资源泄漏,使用RAII管理资源,使用智能指针shared_ptr

    • 为防止资源泄漏,使用RAII(resource Acquisition Is Initialization)对象,在构造函数中获得资源并在析构函数中释放资源。

    • 两个常被使用的RAII class分别是shared_ptr和unique_ptr(auto_ptr已经废弃)。

    条款十四 在资源管理类中,小心copy的行为

    • 复制RAII对象必须一并复制它所管理的资源,所以资源的copying行为决定RAII对象的copying行为。

    • 普遍而常见的RAII class copying行为是:抑制copying、使用引用计数法。不过其他行为也都可能被实现。

    条款十五 在资源管理类中,提供对原始资源的访问。

    • 每一个RAII class应该提供一个“取得其所管理之资源”的办法。

    • 对原始资源的访问可能经由显式转换或隐式转换。一般而言显式转换比较安全,但隐式转换对客户比较方便。

    class Font{
    	operator FontHandle() const  //隐式转换函数,容易带来危险。
    	{return f;}
    
    	FontHandle get() const  //显式转换函数
    	{return f;}
    };
    

    条款十六 成对使用new和delete,并采用相同的形式

    • new [] ,delete []; new ,delete.

    条款十七 以独立语句将newed对象置入智能指针

    • 以独立语句将newed对象置入智能指针内,如果不这样做,一旦new的时候抛异常,有可能导致难以察觉的资源泄漏。
  • 相关阅读:
    loj6145. 「2017 山东三轮集训 Day7」Easy
    CF1019E Raining season
    CF1261F Xor-Set
    Python笔试——递归算法学习
    Python笔试——贪心算法
    Python笔试——万万没想到抓捕孔连顺
    Python笔试——雀魂启动
    Python学习——正则表达式
    Python笔试——毕业旅行问题
    Python笔试——Stern-Brocot tree
  • 原文地址:https://www.cnblogs.com/whutao/p/10857548.html
Copyright © 2011-2022 走看看