在C++98中,0有多个含义:可以表示0,'\0',false,也可以表示空指针,这使得阅读程序的人和编译器难以区分.C++11提供更好的解决方案:引入关键字nullptr,用于表示空指针.当然您仍可以使用NULL(否则大量现有的代码将非法).但建议您使用nullptr.例如 :
int* ptr = nullptr; // 声明一个指向int的指针并初始化为nullptr
if (ptr == nullptr) {
// ptr是空指针,执行一些操作
}
ptr = new int(5); // 为ptr分配内存
// ... 使用ptr ...
delete ptr;
ptr = nullptr; // 释放ptr指向的内存后,将其设置为nullptr以防止悬挂指针
使用nullptr
的另一个好处是,它有一个专门的类型nullptr_t
,这有助于区分nullptr
和整数0。这可以防止一些可能误导的代码,例如将nullptr
错误地解释为整数0。
总的来说,C++11的nullptr
是一个更安全、更清晰的空指针常量,应该优先使用它来替代传统的NULL宏定义。