用于比较指针到 NULL 的编码标准



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

if (ptr != nullptr) ...

if (ptr) ...

C++(11)更好吗?

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

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

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

if ( ptr != nullptr )

if ( ptr != NULL )

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

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

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

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

所以可能更可取的是要求

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

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

最新更新