zoukankan      html  css  js  c++  java
  • C/C++ nullptr

    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

  • 相关阅读:
    使用logstash收集java、nginx、系统等常见日志
    day71-Auth模块,BBS小作业初始
    day70-django中间件
    day69-form源码,cookies与session
    day68-分布器的使用,forms组件
    day67-ajax发送数据,分页器等
    day66-图书管理系统,Ajax,choices参数等
    复习知识点-没搞清楚的总结
    day65-聚合查询,分组查询,F与Q查询,事务,参数
    day64-表单查询,双下查询,各种查询(model层,数据库操作)
  • 原文地址:https://www.cnblogs.com/YZFHKMS-X/p/11805652.html
Copyright © 2011-2022 走看看