C ++中的nullptr到底是什么?
在本节中,我们将看到C ++中的nullptr。nullptr表示指针文字。它是类型std::nullptr_t的prvalue。它具有从nullptr隐式转换为任何指针类型和任何指向成员类型的指针的null指针值的属性。让我们看一个程序,了解这个概念。
示例
#include<iostream>using namespace std;
int my_func(int N){ //function with integer type parameter
cout << "Calling function my_func(int)";
}
int my_func(char* str) { //overloaded function with char* type parameter
cout << "calling function my_func(char *)";
}
int main() {
my_func(NULL); //it will call my_func(char *), but will generate compiler error
}
输出结果
[Error] call of overloaded 'my_func(NULL)' is ambiguous[Note] candidates are:
[Note] int my_func(int)
[Note] int my_func(char*)
那么上述程序有什么问题?NULL通常定义为(void *)0。我们可以将NULL转换为整数类型。因此,my_func(NULL)的函数调用是不明确的。
如果我们使用nullptr代替NULL,我们将得到如下结果-
示例
#include<iostream>using namespace std;
int my_func(int N){ //function with integer type parameter
cout << "Calling function my_func(int)";
}
int my_func(char* str) { //overloaded function with char* type parameter
cout << "calling function my_func(char *)";
}
int main() {
my_func(nullptr); //it will call my_func(char *), but will generate compiler error
}
输出结果
calling function my_func(char *)
我们可以在所有期望NULL的地方使用nullptr。像NULL一样,nullptr也可以转换为任何指针类型。但这不能隐式转换为NULL之类的整数类型。
以上是 C ++中的nullptr到底是什么? 的全部内容, 来源链接: utcz.com/z/352473.html