是否有任何关于比较的编码指南:
if (ptr != nullptr) ...
或
if (ptr) ...
在C ++(11)中更好吗?
这个问题与C: Comparison to NULL没有重复,后者据说这些形式在C中是等价的。
这个问题都不是基于选择的问题:我不是问你喜欢什么,而是问是否有任何编码标准或指导方针,这些标准或指导方针更倾向于采用某种形式。
答案 0 :(得分:2)
我见过的每个编码指南都坚持
if ( ptr != nullptr )
或
if ( ptr != NULL )
在预C ++ 11中,这是通常的情况。使用0
代替
NULL
也很普遍,可以考虑选择
风格问题(从某种意义上说,有一个有效的论点
对于这两种观点)。
通常,编码指南倾向于避免隐式转换
(可能的例外是无损转换,例如
int
到double
),因为它们使代码更难阅读。
另一方面,编码指南无法避免无处不在 成语(不是这里的情况),所以一般会接受 将流隐式转换为可以充当的类型 布尔值。 (这里的部分动机可能是事实 程序员提出的替代方案是 一般都错了。更好的隐式转换有效 没有的代码。)
答案 1 :(得分:0)
正如我在c ++ 11标准中所说的那样,nullptr不作为数值处理,因此它不是0
,因为C中的NULL定义是。它不仅仅是以自己的方式使用NULL而且不会被视为数字0
,主要是为了避免与模板不匹配。
因此可能会首选
if (ptr != nullptr) ...
nullptr
不会以任何方式被称为NULL。