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 关键字不是一种类型,也不支持用于:
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的更多相关文章
- C++11特性——变量部分(using类型别名、constexpr常量表达式、auto类型推断、nullptr空指针等)
#include <iostream> using namespace std; int main() { using cullptr = const unsigned long long ...
- C++11 之 nullptr
C++11 中,nullptr 是空指针,可用来给 (指向任意对象类型的) 指针赋值 广义整型 (integral types) = char, short, int, long, long long ...
- c++11编码规范 NULL还是nullptr
0和nullptr/NULL 至于指针(地址值),根据实际选择用0.NULL还是nullptr.对使用了C++11特性的项目,选用nullptr:对于C++03项目,推荐NULL,因为它像是一个指针
- nullptr和NULL
nullptr是c++11中的关键字,表示空指针 要区分nullptr和NULL,首先要明白NULL的含义: NULL是一个宏定义,在c和c++中的定义不同,c中NULL为(void*)0,而c++中 ...
- nullptr和NULL 区别
注:本文内容摘自网络,准确性有待验证,现阶段仅供学习参考.尊重作品作者成果,原文链接 :http://www.2cto.com/kf/201302/190008.html 1.为什要有nullptr ...
- 聊一聊c++中指针为空的三种写法 ----->NULL, 0, nullptr
看到同事用了一下nullptr.不是很了解这方面东东,找个帖子学习学习 http://www.cppblog.com/airtrack/archive/2012/09/16/190828.aspx N ...
- C++ nullptr 的一种实现
C/C++ 程序员都应该了解NULL, 0, nullptr, NULL表示空指针,即指针不指向任何对象,C++11后有多了nullptr更好是表了这类概念,看看nullptr是如何实现的: con ...
- c++11 NULL、0、nullptr
C的NULL 在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码: int *i = NULL;foo_t *f = NULL; 实际上在C语言中,NULL通常被定义为如下: #de ...
- NULL和nullptr的区别
//error C2665: “go”: 2 个重载中没有一个可以转换所有参数类型 #include <iostream> void go(int num) { std::cout < ...
- C++ 11 学习2:空指针(nullptr) 和 基于范围的for循环(Range-based for loops)
3.空指针(nullptr) 早在 1972 年,C语言诞生的初期,常数0带有常数及空指针的双重身分. C 使用 preprocessor macroNULL 表示空指针, 让 NULL 及 0 分别 ...
随机推荐
- hdu6395 /// 优先队列dijkstra
题目大意: 给定无向图的n m为点数和边数 接下来m行给定u v id表示点u到点v间有一条编号为id的边 当由一条边走到另一条边 而两条边的编号不同时 费用+1 优先队列跑dijkstra最短路 按 ...
- python--面向对象:继承
继承是创建新类的方式,新建的类可以继承多个父类(python里),父类又称为基类和超类,新建的类又称为派生类和子类 如果没有基类,python默认继承object祖类,object是所有类的基类 一. ...
- BOM的构成
1.DOM 和 BOM 的区别 DOM:文档对象模型,把[文档]当做一个[对象]来看待,DOM的顶级对象是document 主要学习的是操作页面元素,DOM 是 W3C 的标准规范 BOM:浏览器对象 ...
- mysql数据分组
创建分组 分组是在SELECT语句中的GROUP BY 子句中建立的. 例: SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY ...
- 使用 SpringBoot 配置发送邮件功能
1.使用 SpringBoot 配置发送邮件功能 项目总体结构 用户表设计 SET FOREIGN_KEY_CHECKS=0; CREATE DATABASE sample; USE sample; ...
- php Excel导出功能
/** * * execl数据导出 */ function exportOrderExcel2($title, $cellName, $data) { //引入核心文件 vendor("PH ...
- delphi xe10 安卓设备信息
//引用单元 FMX.Android.DeviceInfo.GetInformation; Memo1.Lines.Add('ID:'+FMX.Android.DeviceInfo.ID); Memo ...
- 01二维背包+bitset优化——hdu5890
口胡一种别的解法: 三重退背包,g1[j]k]表示不选x的选了j件物品,体积为k的方案数,g[0][0] = 1 , g1[j][k]=dp[j][k]-g1[j-1][k-a[x]] 然后按这样再退 ...
- 仿淘宝使用flex布局实现页面顶部和底部的固定布局
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- delphi 压缩
DELPHI 通过ZLib来压缩文件夹 unit Unit1; interface uses ZLib, Windows, Messages, SysUtils, Variants, Classes, ...