在编程逻辑世界,有因必有果,如果一个结果含糊不定(二义性),显然是我们不想要的。C++11中引入nullptr是为了解决NULL的二义性问题。
NULL二义性的体现
void func(int) {
}
void func(int *) {
}
当函数调用func(NULL)时会是怎样执行?
先看C++对NULL的定义:
#
C++中的NULL宏定义为0,可能导致函数调用的二义性。C++11引入nullptr作为空指针常量,以消除这种二义性,确保func(nullptr)正确调用func(void*)。
在编程逻辑世界,有因必有果,如果一个结果含糊不定(二义性),显然是我们不想要的。C++11中引入nullptr是为了解决NULL的二义性问题。
NULL二义性的体现
void func(int) {
}
void func(int *) {
}
当函数调用func(NULL)时会是怎样执行?
先看C++对NULL的定义:
#
398
318
9万+
1637

被折叠的 条评论
为什么被折叠?