☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

在 C++ 代码中用 nullptr 代替 NULL

14.14 ID_deprecatedNULL
目录 › next › previous

标识符 NULL 由实现定义,在 C++ 语言中往往等同于常量 0,无法有效区分整数与指针,用 nullptr 可避免这种问题。

示例:

void foo(int) {
    cout << "foo-1\n";
}

void foo(int*) {
    cout << "foo-2\n";
}

int main() {
    foo(NULL);  // Non-compliant, what is output?
}

NULL 表示空指针,所以应该调用参数为指针的重载函数,但不同的编译器对这段代码有不同的处理,有的无法通过编译,有的编译执行后会输出 foo-1,用 nullptr 代替 NULL 可解决这种问题。

依据

ISO/IEC 14882:2003 C.2.2.3(1)-implementation ISO/IEC 14882:2011 2.14.7(1) ISO/IEC 14882:2011 C.3.2.4(1)-implementation ISO/IEC 14882:2017 C.5.2.7(1)-implementation

参考

C++ Core Guidelines ES.47
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.