C++11之nullptr

作者: Hard模式 | 来源:发表于2018-06-15 18:27 被阅读0次

    C++11之前,我们使用 ptr = NULL对某个指针进行初始化。
    同时还使用ptr == NULL进行指针是否为空的判断。

    在C语言中,空指针的值表示为

    #define NULL (void *)0
    

    但是C++对语法的类型检查更为严格,(void *)0就不好使了,比如:

    int *p = (void *)0; // error, cannot assign void* to int*
    

    所以在C++中的NULL为 #define NULL 0,但这又会导致函数重载时遇到困难:

    void foo(char c, void *p);
    void foo(char c, int i);
    int main()
    {
        foo( 'x', NULL ); //?? Which foo
    }
    

    C++引入nullptr,作为一个新的关键字,解决了上述让人头疼的问题。
    让我们再回顾一下几种“0”的区别。

    • 整数0 -- int number zero : 0
    • 指向空类型的指针 -- a pointer to an object of unknown type : void*
    • 无指向的空指针 -- a pointer that does not point to an object : nullptr

    相关文章

      网友评论

        本文标题:C++11之nullptr

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