news 2026/4/29 9:17:00

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【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
  • 避免在整型和指针类型之间重载。

原著在线阅读地址

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 23:45:11

Llama3-8B图书馆检索:智能查询系统实战指南

Llama3-8B图书馆检索&#xff1a;智能查询系统实战指南 1. 为什么需要一个“图书馆检索”专用的AI模型&#xff1f; 你有没有遇到过这样的场景&#xff1a; 在高校图书馆的数字资源平台里&#xff0c;输入“量子计算在材料科学中的应用”&#xff0c;结果返回了200多篇论文&…

作者头像 李华
网站建设 2026/4/26 23:46:58

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

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

作者头像 李华
网站建设 2026/4/26 23:44:09

NewBie-image-Exp0.1安全部署:隔离容器环境保障模型运行稳定

NewBie-image-Exp0.1安全部署&#xff1a;隔离容器环境保障模型运行稳定 1. 引言&#xff1a;为什么需要安全隔离的部署方式&#xff1f; 在当前AI模型快速迭代的背景下&#xff0c;像 NewBie-image-Exp0.1 这样功能强大的动漫图像生成模型&#xff0c;虽然带来了前所未有的创…

作者头像 李华
网站建设 2026/4/27 0:01:47

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

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

作者头像 李华
网站建设 2026/4/28 13:14:32

java_ssm74音乐播放在线试听网站

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

作者头像 李华