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的时候抛异常,有可能导致难以察觉的资源泄漏。

posted on 2019-05-13 16:49  陶大先生  阅读(289)  评论(0编辑  收藏  举报

导航