[C++ Notes] 引用、内联关键字和 nullptr - III.
最编程
2024-10-14 21:05:24
...
NULL实际上是一个宏,在C头文件(stddef.h)中,可以看如下代码:
看下面这段代码运行结果如何:
void Func(int a)
{
cout << "Func(int a)" << endl;
}
void Func(int* ptr)
{
cout << "Func(int* ptr)" << endl;
}
int main()
{
Func(0);
Func(NULL);
return 0;
}
按照C语言的语法,应该是输出Func(int a)和Func(int* ptr),但是实际运行结果并不是这样的
这是因为在C++中,NULL是被定义成字面常量0
因此在调用的时候就调用的第一个函数。
C++11中引入nullptr,nullptr是一个特殊的关键字,nullptr是一种特殊类型的字面常量,它可以转换成任意其它类型的指针类型。使用nullptr定义空指针可以避免类型转换的问题,因为nullptr只能被隐式的转换为指针类型,而不能被转换为整数类型。
所以我们以后再使用空指针时就定义为nullptr了。
下一篇: linux 中软链接和硬链接的区别