C++11常用特性介绍——nullptr关键字及用法

一、nullptr关键字及用法

  1)NULL的二义性

    void func(int) {}

    void func(int*) {}

    当函数调用func(NULL)时会执行哪个函数呢?

  先看C++对NULL的定义:

    #if defined(__cplusplus)

    # define NULL 0         /* C++中使用0作为NULL的值 */

    #else # define NULL ((void *)0)   /* C中使用((void *)0)作为NULL的值 */

    #endif

  我们可以看到C++的NULL被宏定义为0,所以函数func(NULL)会执行func(NULL)函数,而C里面会执行func(int),

  为个解决这个问题,引入了nullptr(空指针常量),当函数调用func(nullptr)时执行func(int*)。

原文地址:https://www.cnblogs.com/zhangnianyong/p/11855147.html