【Effective Modern C++】第三章 转向现代C++:8. 优先选用nullptr,而非0或NULL

当C++在只能使用指针的语境中发现了0会把勉强解释为空指针,但是C++的基本观点还是0和NULL的类型是int,而非指针

在C++98中,这样的观点可能在指针类型和整型之间进行重载时可能会发生意外:

void f(int); // 整型版本 void f(bool); // 布尔版本 void f(void*); // 指针版本 f(0); // 调用 f(int),而不是 f(void*)! f(NULL); // 可能通不过编译,但一般会调用 f(int)。从来不会调用 f(void*) f(nullptr); // 正确调用 f(void*)

nullptr的优点

它不具备整型类型。实际类型是std::nullptr_t,并且可以隐式转换到所有的裸指针类型。

提升代码的可读性:

// 使用 0/NULL 的歧义 auto result = findRecord(); if (result == 0) { // result 是指针还是整数?不明确 // ... } // 使用 nullptr 的明确性 auto result = findRecord(); if (result == nullptr) { // 明确是指针比较 // ... }

在使用模板时具有显著优势(模板类型推导会严格将 0/NULL 解析为整型,而非空指针语义):

int f1(std::shared_ptr<Widget> spw); double f2(std::unique_ptr<Widget> upw); bool f3(Widget* pw); // 模板函数 template<typename FuncType, typename PtrType> decltype(auto) lockAndCall(FuncType func, PtrType ptr) { // ... 加锁等操作 return func(ptr); } // 调用结果 auto r1 = lockAndCall(f1, 0); // 编译错误:0被推导为int,无法转为shared_ptr auto r2 = lockAndCall(f2, NULL); // 编译错误:NULL被推导为整型,无法转为unique_ptr auto r3 = lockAndCall(f3, nullptr);// 正确:nullptr_t可隐式转为Widget*

总结

  • 相对于0或NULL,优先选用nullptr
  • 避免在整型和指针类型之间重载。

原著在线阅读地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1203892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qwen2.5-0.5B推理延迟高?极致优化部署案例分享

Qwen2.5-0.5B推理延迟高&#xff1f;极致优化部署案例分享 1. 问题背景&#xff1a;小模型也怕“卡顿” 你有没有遇到过这种情况&#xff1a;明明用的是参数量只有0.5B的轻量级大模型&#xff0c;理论上应该飞快&#xff0c;结果一跑起来对话延迟还是高得离谱&#xff1f;打个…

Qwen3-Embedding-4B调用无响应?网络配置排查教程

Qwen3-Embedding-4B调用无响应&#xff1f;网络配置排查教程 当你在本地部署完 Qwen3-Embedding-4B&#xff0c;满怀期待地运行那段熟悉的 client.embeddings.create(...) 代码&#xff0c;却只等到一个卡住的光标、超时错误&#xff0c;或者干脆是空荡荡的 ConnectionRefused…

一键启动YOLOE:目标检测与分割快速落地

一键启动YOLOE&#xff1a;目标检测与分割快速落地 在计算机视觉领域&#xff0c;目标检测与实例分割一直是核心任务。然而&#xff0c;传统模型往往受限于封闭类别、部署复杂和迁移成本高&#xff0c;难以应对真实场景中“看见一切”的需求。如今&#xff0c;YOLOE&#xff0…

Qwen3-4B-Instruct镜像免配置优势:告别环境冲突实战体验

Qwen3-4B-Instruct镜像免配置优势&#xff1a;告别环境冲突实战体验 1. 为什么你总在“配环境”上卡三天&#xff1f; 你有没有过这样的经历&#xff1a; 刚下载好一个大模型&#xff0c;兴致勃勃想试试效果&#xff0c;结果卡在第一步——装依赖。 torch 版本和 transformer…

java_ssm72酒店客房客房菜品餐饮点餐管理系统90340

目录具体实现截图系统概述核心功能技术架构优势与创新应用价值系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 系统概述 Java SSM72酒店客房与餐饮点餐管理系统是一款基于SSM&#xff08;Spring…

CAM++实时录音功能:麦克风直连验证实战教程

CAM实时录音功能&#xff1a;麦克风直连验证实战教程 1. 为什么你需要“直接对着麦克风说话就能验证”的能力&#xff1f; 你有没有遇到过这些场景&#xff1a; 想快速测试一段刚录的语音是否和自己之前的声纹匹配&#xff0c;却要先保存成文件、再上传——光找文件夹就花了…

新手必看!用科哥镜像快速搭建Emotion2Vec+语音情感系统

新手必看&#xff01;用科哥镜像快速搭建Emotion2Vec语音情感系统 1. 为什么你需要这个语音情感识别系统&#xff1f; 你有没有遇到过这些场景&#xff1a; 客服质检团队每天要听上百条通话录音&#xff0c;靠人工判断客户情绪是否满意&#xff0c;效率低、主观性强&#xf…

java_ssm74音乐播放在线试听网站

目录 具体实现截图系统概述核心功能模块技术实现亮点应用场景与扩展性 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 系统概述 Java_SSM74音乐播放在线试听网站是一个基于SSM&#xff08;Spr…

设计师福音!Qwen-Image-2512-ComfyUI让修图效率翻倍

设计师福音&#xff01;Qwen-Image-2512-ComfyUI让修图效率翻倍 你有没有经历过这样的场景&#xff1a;客户临时要求把产品图的背景从办公室换成海边&#xff0c;模特的衣服颜色从红变蓝&#xff0c;还要加上“新品首发”水印&#xff1f;原本几分钟能说清的需求&#xff0c;却…

java_ssm75餐厅网站订餐系统

目录 具体实现截图餐厅网站订餐系统摘要 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 餐厅网站订餐系统摘要 基于Java SSM框架的餐厅网站订餐系统旨在为餐饮行业提供高效、便捷的在线订餐服…

YOLOv10训练时如何节省显存?AMP功能实测有效

YOLOv10训练时如何节省显存&#xff1f;AMP功能实测有效 在深度学习模型训练过程中&#xff0c;显存不足是许多开发者经常遇到的“拦路虎”。尤其是像YOLOv10这样的高性能目标检测模型&#xff0c;在高分辨率输入、大batch size和复杂网络结构下&#xff0c;显存消耗往往迅速飙…

智能体软件工程落地:IQuest-Coder-V1 Agent构建教程

智能体软件工程落地&#xff1a;IQuest-Coder-V1 Agent构建教程 你是否试过让一个AI自己拆解需求、写测试、调用工具、修复bug&#xff0c;最后交出可运行的代码&#xff1f;不是帮你补全几行函数&#xff0c;而是真正像工程师一样思考、试错、迭代——IQuest-Coder-V1 Agent …

java_ssm67社区居民便民服务关怀系统

目录具体实现截图社区居民便民服务关怀系统摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 社区居民便民服务关怀系统摘要 随着城市化进程加快&#xff0c;社区居民对高效、便捷的便民服务需…

Glyph模型应用场景详解:不止于海报生成

Glyph模型应用场景详解&#xff1a;不止于海报生成 1. 引言 你有没有遇到过这样的问题&#xff1a;需要处理一份几十页的PDF文档&#xff0c;或者分析一整套复杂的产品说明书&#xff0c;光是读完就要花上几个小时&#xff1f;传统的大语言模型在面对长文本时常常束手无策——…

AI团队部署规范:DeepSeek-R1生产环境最佳实践

AI团队部署规范&#xff1a;DeepSeek-R1生产环境最佳实践 在AI工程落地过程中&#xff0c;模型部署不是“跑通就行”的一次性任务&#xff0c;而是需要兼顾稳定性、可维护性、资源效率与团队协作的一整套工程实践。尤其当团队开始将具备数学推理、代码生成和逻辑推演能力的轻量…

java_ssm68社区志愿者服务

目录具体实现截图Java SSM68 社区志愿者服务系统摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 Java SSM68 社区志愿者服务系统摘要 社区志愿者服务系统基于Java SSM&#xff08;Spring S…

开发者必看:通义千问3-14B集成LMStudio一键部署教程

开发者必看&#xff1a;通义千问3-14B集成LMStudio一键部署教程 1. 为什么Qwen3-14B值得你花10分钟部署 你是不是也遇到过这些情况&#xff1a; 想跑个靠谱的大模型&#xff0c;但30B以上模型动辄要双卡A100&#xff0c;显存直接爆掉&#xff1b;试过几个14B模型&#xff0c…

java_ssm69考研族大学生校园租房网站

目录 具体实现截图摘要 系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 具体实现截图 摘要 针对考研族大学生在校园周边租房需求分散、信息不对称的问题&#xff0c;设计并实现了一个基于Java SSM框架的校园…

复杂背景也不怕,科哥模型精准识别发丝边缘

复杂背景也不怕&#xff0c;科哥模型精准识别发丝边缘 1. 引言&#xff1a;为什么传统抠图搞不定发丝&#xff1f; 你有没有遇到过这种情况&#xff1a;一张人像照片&#xff0c;头发飘逸&#xff0c;背景却乱七八糟——树影、栏杆、反光&#xff0c;甚至还有另一张人脸。想把…

PyTorch-2.x-Universal镜像如何切换CUDA版本?

PyTorch-2.x-Universal镜像如何切换CUDA版本&#xff1f; 在深度学习开发中&#xff0c;CUDA版本兼容性常常是模型训练能否顺利启动的关键。你可能遇到这样的情况&#xff1a;新买的RTX 4090显卡默认驱动只支持CUDA 12.x&#xff0c;而你手头的某个老项目却严格依赖CUDA 11.8&…