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