Heaven Liang

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

1、delete之前多余的判断,通常是在析构函数里:

if (ptr != NULL)
{ delete ptr; }

说明:C++规范中规定对空指针delete相当于什么都不做,这个判断不需要你来做。


2、什么都不做的构造、析构函数:

class Example
{
public:
    Example() {};
    ~Example() {};
};

说明:既然什么都不做,还是留给编译器去生成吧,除非是作为基类,需要把dtor声明为virtual。

 

3、new完之后判断是否是NULL:

Example *pExam = new Example;
if (pExam == NULL)
{
    // ...
}

说明:这里不讨论nothrow的情况。这种代码在很多公司的产品代码库里都有机会找得到,看到这样的代码可以粗略判断coder的学习习惯和技能水平。new失败会throw,不是通过返回的指针来判断的。

 

4、析构函数里把成员变量还原成初始值:

 1 class Example
 2 {
 3 public:
 4     Example() : someFlag_(false)
 5     {
 6         ...
 7     }
 8 
 9     ~Example()
10     {
11         someFlag_ = false;  // No need
12     }
13 
14 private:
15     bool someFlag_;
16 };

说明:这里不包含类中起线程并使用标记位的情况。多此一举,马上销毁释放的成员变量,放着就好了。

posted on 2013-09-09 21:41  Heaven Liang  阅读(202)  评论(0)    收藏  举报