如果每次看到这个宏在使用时,我都有一毛钱,那么今天我只是为了好玩而编写代码:
#define SAFE_DELETE(p) if ((p) != NULL) { delete (p); (p) = NULL; }
为什么程序员坚持在delete
检查空值时继续使用这个宏?是因为它在末尾将指针设置为null?那么,为什么不至少重写它并删除多余的检查:
#define SAFE_DELETE(p) { delete (p); (p) = NULL; }
尽管如此,这似乎不是一个好的做法。
发布于 2014-07-02 16:57:04
让我这样说。这看起来像是C++会做的事情吗?C++充满了陷阱和未定义的行为,但是在这个实例中,它可以帮助您验证一个参数吗?如果您尝试使用空指针执行任何操作,那么您所熟悉的每一种“更安全”的语言都会抛出一个异常,但是您使用的最不安全的语言只会干净地处理它吗?这不是自我一致的。人们采用安全的方法,因为在几乎所有其他情况下,C++都迫使程序员采取安全的方法。换句话说,在C++代码中,“带来您自己的验证”是惯用和习惯性的。它失踪的时候看起来不太对劲。
https://softwareengineering.stackexchange.com/questions/246729
复制相似问题