用于将指针与NULL进行比较的编码标准

时间:2013-09-09 08:22:41

标签: c++ pointers c++11 coding-style null

是否有任何关于比较的编码指南:

if (ptr != nullptr) ...

if (ptr) ...

在C ++(11)中更好吗?

这个问题与C: Comparison to NULL没有重复,后者据说这些形式在C中是等价的。

这个问题都不是基于选择的问题:我不是问你喜欢什么,而是问是否有任何编码标准或指导方针,这些标准或指导方针更倾向于采用某种形式。

2 个答案:

答案 0 :(得分:2)

我见过的每个编码指南都坚持

if ( ptr != nullptr )

if ( ptr != NULL )

在预C ++ 11中,这是通常的情况。使用0代替 NULL也很普遍,可以考虑选择 风格问题(从某种意义上说,有一个有效的论点 对于这两种观点)。

通常,编码指南倾向于避免隐式转换 (可能的例外是无损转换,例如 intdouble),因为它们使代码更难阅读。

另一方面,编码指南无法避免无处不在 成语(不是这里的情况),所以一般会接受 将流隐式转换为可以充当的类型 布尔值。 (这里的部分动机可能是事实 程序员提出的替代方案是 一般都错了。更好的隐式转换有效 没有的代码。)

答案 1 :(得分:0)

正如我在c ++ 11标准中所说的那样,nullptr不作为数值处理,因此它不是0,因为C中的NULL定义是。它不仅仅是以自己的方式使用NULL而且不会被视为数字0,主要是为了避免与模板不匹配。

因此可能会首选

if (ptr != nullptr) ...

nullptr不会以任何方式被称为NULL。