关闭

More Effective C++之10

标签: c++deleteleaknullclass
583人阅读 评论(0) 收藏 举报
分类:
条款10:在constructors内阻止资源泄漏(resource leak)
这里需要一个前提:
char* ptr = NULL;
delete ptr;
       上面的代码是安全的,即删除一个NULL指针是无害的。
       抛弃条款中原来鼓吹auto_ptr的内容,我们只涉及普通指针。那么,这么做:
class MyTest
{
public:
       MyTest():m_aPtr(0),m_bPtr(0)
       {
              try
              {
                     m_aPtr = new A;
                     m_bPtr = new B;
              }
              catch (...)
              {
                     CleanUp();
                     throw;
              }
       }
       ~MyTest(){CleanUp();}
private:
       void CleanUp()
       {
              delete m_aPtr;
              delete m_bPtr;
       }
       A* m_aPtr;
       B* m_bPtr;
};
       关于const成员指针,只能在成员列表中初始化,那么定义一个init函数,将可能出现异常的东西放在这里面,然后在初始化列表外调用init函数。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:612525次
    • 积分:9788
    • 等级:
    • 排名:第1782名
    • 原创:340篇
    • 转载:141篇
    • 译文:0篇
    • 评论:69条
    最新评论