More Effective C++之10

原创 2006年06月02日 10:08:00
条款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函数。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

More Effective C++----(10)在构造函数中防止资源泄漏

Item M10:在构造函数中防止资源泄漏 如果你正在开发一个具有多媒体功能的通讯录程序。这个通讯录除了能存储通常的文字信息如姓名、地址、电话号码外,还能存储照片和声音(可以给出他们名字的正确发音...

More Effective C++之Item M10:在构造函数中防止资源泄漏

如果你正在开发一个具有多媒体功能的通讯录程序。这个通讯录除了能存储通常的文字信息如姓名、地址、电话号码外,还能存储照片和声音(可以给出他们名字的正确发音)。 为了实现这个通信录,你可以这样设计: ...

More Effective C++:Item 27

温习More Effective C++,对于Item 27:要求或禁止在堆中产生对象,整理思路于此文。编译期控制通过禁用编译器产生对象所需的选项即可在编译期阻止对象被定义。产生堆对象所需的选项: ...

More Effective C++之Item M21:通过重载避免隐式类型转换

C++规则:每一个重载的operator必须带有一个用户定义类型(user-defined type)的参数; 以下是一段代码,如果没有什么不寻常的原因,实在看不出什么东西: class UP...

More Effective C++:指针与引用的区别

指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢? ...

More Effective C++----技巧 & (25)将构造函数和非成员函数虚拟化

技巧 本书涉及的大多数内容都是编程的指导准则。这些准则虽是重要的,但是程序员不能单靠准则生活。有一个很早以前的卡通片叫做“菲利猫”(Felix the Cat), 菲利猫无论何时遇到困难,它都会拿...

More Effective C++议题【一】:指针和引用

> 学习笔记【一】 这个议题作为第一个建议出现在了 More effective ++中, 在一开始,第一件事就是提醒了我们关于指向空值的引用. 即如下代码出现的可能性: char *pc = 0; ...

More Effective C++笔记

(之前Mindjet笔记的截图) 更多:(http://blog.csdn.net/u011512437/article/details/48879543 “Effective C++笔记”)

More Effective C++----(12)理解"抛出一个异常"与"传递一个参数"或"调用一个虚函数"间的差异

Item M12:理解"抛出一个异常"与"传递一个参数"或"调用一个虚函数"间的差异 从语法上看,在函数里声明参数与在catch子句中声明参数几乎没有什么差别: class Widget {...

《More Effective C++》6:区别递加和递减符号的前置和后置形式

《More Effective C++》Rule 6:区别递加和递减符号的前置和后置形式
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)