美文网首页
2020-09-24 NULL nullptr

2020-09-24 NULL nullptr

作者: yuerxiaoshui | 来源:发表于2020-09-25 07:28 被阅读0次
    #include <iostream>
    using namespace std;
    
    void func(void* t)
    {
        cout << "func1" << endl;
    }
    
    void func(int i)
    {
        cout << "func2" << endl;
    }
    
    int main()
    {
        func(NULL);
        func(nullptr);
        return 0;
    }
    

    输出结果为:

    func2 
    func1
    

    其中,NULL 参数的函数匹配到了 int 型参数的函数,原因是在 C++ 中,NULL 的定义如下:

    #ifdef __cplusplus
    #define NULL 0
    #else
    #define NULL ((void*)0)
    #endif // __cplusplus
    

    故 NULL 在 C++ 中就代表 0,这是因为在 C++ 中 void* 类型是不允许隐式转换成其他类型的,所以用 0 来代表空指针,但在重载整形的情况下,会出现上述问题。
    所以,C++ 加入了 nullptr,可以保证在任何情况下都代表空指针,而不会出现上述的情况。
    故,建议以后使用 nullptr,不用 NULL。

    相关文章

      网友评论

          本文标题:2020-09-24 NULL nullptr

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