nullptr 关键字表示空指针值。 空指针值可用于指明对象句柄、内部指针或本机指针类型不指向对象。

结合使用 nullptr 与托管代码或本机代码。 编译器为托管空指针值和本机空指针值发出相应但不同的指令。 若要了解如何使用此关键字的 ISO 标准 C++ 版本,请参阅 nullptr

__nullptr 是 Microsoft 专用关键字,虽然与 nullptr 的含义相同,但仅适用于本机代码。 如果你将 nullptr 与本机 C/C++ 代码结合使用,然后使用 /clr 编译器选项进行编译,那么编译器便无法确定 nullptr 指明的是本机空指针值,还是托管空指针值。 若要向编译器明确表达你的意图,请使用 nullptr 来指定托管值,或使用 __nullptr 来指定本机值。

nullptr 关键字相当于 Visual Basic 中的“无”和 C# 中的“null”。

Nullptr中也定义关键字C++适用于 CLI 的托管代码应用程序和与 ISO 标准不可互换C++关键字。 如果你的代码可能会通过编译/clr编译器选项,以托管的代码为目标,然后使用__nullptr代码,必须保证编译器使用本机 C++ 解释的任何行中。 有关详细信息,请参阅nullptr

避免使用 NULL 或零 (0) 为 null 指针常量;nullptr是不易被误用,在大多数情况下更好地工作。 例如,给定 func(std::pair<const char *, double>),那么调用 func(std::make_pair(NULL, 3.14)) 会导致编译器错误。 宏 NULL 将扩展到 0,以便调用 std::make_pair(0, 3.14) 将返回 std::pair<int, double>,此结果不可转换为 func() 的 std::pair<const char *, double> 参数类型。 调用 func(std::make_pair(nullptr, 3.14)) 将会成功编译,因为 std::make_pair(nullptr, 3.14) 返回 std::pair<std::nullptr_t, double>,此结果可转换为 std::pair<const char *, double>

用法

nullptr 关键字可用于任何能使用句柄、本机指针或函数参数的位置。

nullptr 关键字不是一种类型,也不支持用于:

  • sizeof

  • typeid

  • throw nullptr(尽管 throw (Object^)nullptr; 可以正常发挥作用)

nullptr 关键字可用于初始化以下指针类型:

  • 本机指针

  • Windows 运行时句柄

  • 托管句柄

  • 托管内部指针

nullptr 关键字可用于在使用指针或句柄引用之前,先测试引用是否为空。

应正确解释使用空指针值进行错误检查的语言之间的函数调用。

无法将句柄初始化为 0;只能使用 nullptr。 将常数 0 赋给对象句柄会生成装箱的 Int32,并强制转换为 Object^

//https://docs.microsoft.com/zh-cn/cpp/extensions/nullptr-cpp-component-extensions?view=vs-2019

C/C++ nullptr的更多相关文章

  1. C++11特性——变量部分(using类型别名、constexpr常量表达式、auto类型推断、nullptr空指针等)

    #include <iostream> using namespace std; int main() { using cullptr = const unsigned long long ...

  2. C++11 之 nullptr

    C++11 中,nullptr 是空指针,可用来给 (指向任意对象类型的) 指针赋值 广义整型 (integral types) = char, short, int, long, long long ...

  3. c++11编码规范 NULL还是nullptr

    0和nullptr/NULL 至于指针(地址值),根据实际选择用0.NULL还是nullptr.对使用了C++11特性的项目,选用nullptr:对于C++03项目,推荐NULL,因为它像是一个指针

  4. nullptr和NULL

    nullptr是c++11中的关键字,表示空指针 要区分nullptr和NULL,首先要明白NULL的含义: NULL是一个宏定义,在c和c++中的定义不同,c中NULL为(void*)0,而c++中 ...

  5. nullptr和NULL 区别

    注:本文内容摘自网络,准确性有待验证,现阶段仅供学习参考.尊重作品作者成果,原文链接 :http://www.2cto.com/kf/201302/190008.html 1.为什要有nullptr ...

  6. 聊一聊c++中指针为空的三种写法 ----->NULL, 0, nullptr

    看到同事用了一下nullptr.不是很了解这方面东东,找个帖子学习学习 http://www.cppblog.com/airtrack/archive/2012/09/16/190828.aspx N ...

  7. C++ nullptr 的一种实现

    C/C++ 程序员都应该了解NULL, 0, nullptr,  NULL表示空指针,即指针不指向任何对象,C++11后有多了nullptr更好是表了这类概念,看看nullptr是如何实现的: con ...

  8. c++11 NULL、0、nullptr

      C的NULL 在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码: int *i = NULL;foo_t *f = NULL; 实际上在C语言中,NULL通常被定义为如下: #de ...

  9. NULL和nullptr的区别

    //error C2665: “go”: 2 个重载中没有一个可以转换所有参数类型 #include <iostream> void go(int num) { std::cout < ...

  10. C++ 11 学习2:空指针(nullptr) 和 基于范围的for循环(Range-based for loops)

    3.空指针(nullptr) 早在 1972 年,C语言诞生的初期,常数0带有常数及空指针的双重身分. C 使用 preprocessor macroNULL 表示空指针, 让 NULL 及 0 分别 ...

随机推荐

  1. 第七篇 css选择器实现字段解析

    CSS选择器的作用实际和xpath的一样,都是为了定位具体的元素 举例我要爬取下面这个页面的标题 In []: title = response.css(".entry-header h1& ...

  2. plsql创建一个表、序列、和触发器

    plsql创建表后不能直接让id递增,因此要手动创建,下面是例子: 1.创建表 SQL: create table student(id number primary key,name varchar ...

  3. python--序列化:json、pickle、shelva

    序列化 数据类型--->str 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 反序列化 str--->数据类型 序列化三大方法:json *** ...

  4. add a characteristic in enovia PLM

    Problem: add a new Char. name D_COI6 that the description is Injected coloration #7 (COI6) in the D_ ...

  5. No package docker-io available

    新手centos6.8安装docker时从遇到No package docker-io available开始的各种不小心的坑... 新安装了CentOS6.8,准备安装docker,执行命令 yum ...

  6. log4cplus TimeBasedRollingFileAppender

    参考自:http://blog.csdn.net/u010607621/article/details/54944696 对于TimeBasedRollingFileAppender 这个日志appe ...

  7. Centos 添加 sudo 用户

    说明以下的 <username>字样 是 用户名 新增用户 # 终端命令 useradd <username> 举例: useradd <username> -s ...

  8. EF批量添加

    1.首先,打开工具——NuGet包管理器——管理解决方案的NoGet程序包——搜索Z.EntityFramework.Extensions 点击安装!!! codefirst定义一个实体,用EF的方法 ...

  9. 洛谷P3916 图的遍历

    题目链接:https://www.luogu.org/problemnew/show/P3916 题目大意 略. 分析 以终为始,逆向思维. 代码如下 #include <bits/stdc++ ...

  10. A1075 PAT Judge (25 分)

    The ranklist of PAT is generated from the status list, which shows the scores of the submissions. Th ...