NULL和nullptr都是表示空指针的关键字,但是在C++11之后,推荐使用nullptr来表示空指针。 区别如下: 类型安全性:NULL实际上是一个宏定义,被定义为0或者((void*)0),因此可以隐式地转换为任何指针类型。而nullptr是一个关键字,且严格遵循类型安全规则,只能转换为指针类型。 重载:nullptr可以进行函数重载,而NULL不可以。
nullptr:nullptr是 C++11 中引入的一个关键字,专门用于表示空指针。它是一个类型安全的指针常量,具有明确的指针类型 (std::nullptr_t),并且不能隐式转换为整数类型。 nullptr_t nullptr具有明确的类型std::nullptr_t,并且只能用于指针类型。 编译器能够识别nullptr并明确区分它与其他类型(如整数或枚举)。 2. 类型...
NULL在C++中就是0,这是因为在C++中void* 类型是不允许隐式转换成其他类型的,所以之前C++中用0来代表空指针,但是在重载整形的情况下,会出现上述的问题。所以,C++11加入了nullptr,可以保证在任何情况下都代表空指针,而不会出现上述的情况,因此,建议以后还是都用nullptr替代NULL吧,而NULL就当做0使用。 其他:在没有...
NULL 和 nullptr 根据上面,我们知道了NULL本身是符号,只是不同编译器给出了不同的定义。刚刚看到了vs的定义,下面看下gcc对NULL的定义: 1) 如果gcc是c 语言模式而且gcc版本低于3.0,那么定义NULL 为 void* 类型 2) 如果gcc是c++ 语言模式,而且是32位,那么定义NULL 为无类型的0 ...
nullptr 关键字nullptr指定类型std::nullptr_t的 null 指针常量,该类型可转换为任何原始指针类型。 尽管可以使用关键字nullptr而不包含任何标头,但如果代码使用类型std::nullptr_t,则必须通过包含标头<cstddef>来定义该类型。 备注 用于托管代码应用程序的 C++/CLI 中也定义了nullptr关键字,并且它与 ISO 标准 C++ ...
nullptr 是 C++11 引入的一个新的关键字,用于表示空指针,在 C++11 之前,我们通常使用 NULL 来表示空指针,NULL 实际上是一个整数常量,它可以被隐式转换为任何指针类型,这可能会导致一些潜在的问题,而 nullptr 是一个明确的空指针字面量,它只能被转换为指针类型,不能被转换为其他类型,这提高了代码的安全性和可...
nullptr 自从C++11以来,有一个小特性完美的解决了这个问题——nullptr。作为一个字面常量和一个零指针常数,它可以被隐式转换为任何指针类型。我们只需稍作修改上边的例子,你就会得到: void kissGirlfriend(GirlFriend* gf); void kissGirlfriend(int gfId); int main() { kissGirlfriend(nullptr); //调...
2.nullptr 1.NULL 在C++ 程序开发中,为了提高程序的健壮性,一般会在定义指针的同时完成初始化操作,或者在指针的指向尚未明确的情况下,都会给指针初始化为 NULL,避免产生野指针(没有明确指向的指针,操作也这种指针极可能导致程序发生异常)。
nullptr是一中特别类型的字面值,可被转换成任意其他类型的指针; 二. 初始化所有指针 <<C++ Primer>>第5版 P49写道:使用未经初始化的指针是危险的; 建议初始化所有的指针,尽量等定义好对象以后再定义指向它的指针,如果实在不清楚,指针指向何处,就把它初始化为nullptr,这样程序就能知道它没有指向任何具体的对象了....