欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

[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了