美文网首页IT狗工作室
C++ 理解NULL和nullptr

C++ 理解NULL和nullptr

作者: 铁甲万能狗 | 来源:发表于2019-11-17 21:50 被阅读0次

    考虑以下代码简单的代码,向my函数传递NULL会发生什么问题?

    #include <bits/stdc++.h>  
    using namespace std;
    
    int my(int n){
       cout<<"my(int)"<<endl;
    };
    
    int my(char* s){
       cout<<"func(char*)"<<endl;
    };
    
    int main(void){
      func(NULL);
      return 0;
    }
    

    编译无法通过,这里发生什么问题呢?
    NULL在C中实际上被定义为(void*)0,并且在某些C编译中允许将NULL转化为整数类型,但在新版的C++编译器中这是不允许的。

    因此函数调用my(NULL)会另C++编译器非常困扰,因为你提供的my函数原型跟你调用中提供的参数类型无法匹配

    解决方法
    nullptr是可在所有预期为NULL的地方使用的关键字。 像NULL一样,nullptr可以隐式转换并且可以与任何指针类型进行比较,与NULL不同,它不能隐式转换或与整数类型进行比较。并且nullptr可转换为bool

    相关文章

      网友评论

        本文标题:C++ 理解NULL和nullptr

        本文链接:https://www.haomeiwen.com/subject/mvugvctx.html