0

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

if (ptr != nullptr) ...

或者

if (ptr) ...

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

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

这个问题都不是基于选项的:我不是在问你喜欢什么,而是问是否有任何编码标准或指南,告诉你喜欢一种或另一种形式。

4

2 回答 2

2

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

if ( ptr != nullptr )

或者

if ( ptr != NULL )

在 C++11 之前的版本中,这是通常的情况。使用0代替 NULL也很普遍,并且可以将选择视为风格问题(在某种意义上,两种观点都有有效的论据)。

通常,编码指南倾向于避免隐式转换(非有损转换可能除外,例如 intto double),因为它们使代码更难阅读。

另一方面,编码指南无法避免无处不在的习语(这里不是这种情况),因此通常会接受将流隐式转换为可以充当布尔值的类型。(这里的部分动机可能是程序员提出的替代方案通常是错误的。隐式转换比不起作用的代码更好。)

于 2013-09-09T08:38:16.707 回答
0

正如我在 c++11 标准中正确理解的那样,nullptr 没有作为数值处理,所以它不像0C 中的 NULL 定义那样。它更多地只是 NULL 以自己的方式,不会被视为 numeric 0,主要是为了避免与模板不匹配。

所以可能更喜欢要求

if (ptr != nullptr) ...作为

nullptr不以任何方式调用为 NULL。

于 2013-09-09T08:31:58.540 回答