一些写了还不如不写的C++代码

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 };

说明:这里不包含类中起线程并使用标记位的情况。多此一举,马上销毁释放的成员变量,放着就好了。
原文链接: https://www.cnblogs.com/surmountian/p/3310945.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/103455

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午6:57
下一篇 2023年2月10日 上午7:13

相关推荐