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

浙公网安备 33010602011771号