文章

C++NULL与nullptr

NULL为宏定义0,类型不安全;nullptr为类型安全的空指针常量。

C++NULL与nullptr

C++ NULL 与 nullptr

在 C++ 中,nullptrNULL 都表示空指针,但它们之间有一些关键区别,特别是在类型安全和现代 C++ 编程中的推荐使用方式上:

NULL

通常被定义为 0((void*)0)(依赖于编译器和平台)。

类型不明确: 在 C++ 中是一个整数常量,可能导致函数重载歧义。在 C++11 之后,应使用 nullptr 替代 NULL

1
2
3
4
void func(int);
void func(char*);

func(NULL); // 可能调用 func(int),产生歧义

nullptr(C++11 引入)

类型:std::nullptr_t,是一个专门用于表示空指针的类型。

类型安全: 类型安全非常好,不会被误解为整数。

1
2
3
4
void func(int);       // 重载1:接收int
void func(char*);     // 重载2:接收指针

func(nullptr); // 调用 func(char*),类型清晰
本文由作者按照 CC BY 4.0 进行授权