news 2026/3/2 12:50:53

【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/2/28 20:34:26

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

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

作者头像 李华
网站建设 2026/3/2 12:10:13

代码生成受影响吗?Qwen2.5-7B微调后编程能力评估

代码生成受影响吗&#xff1f;Qwen2.5-7B微调后编程能力评估 在大模型落地实践中&#xff0c;一个常被忽视却至关重要的问题浮出水面&#xff1a;当我们对通用大模型进行轻量级微调&#xff08;如LoRA&#xff09;以适配特定身份、风格或业务需求时&#xff0c;它原本擅长的核…

作者头像 李华
网站建设 2026/2/28 8:45:25

基于Qwen的亲子互动应用:动物卡片生成系统部署案例

基于Qwen的亲子互动应用&#xff1a;动物卡片生成系统部署案例 你是否想过&#xff0c;和孩子一起“创造”一只会笑的熊猫、穿裙子的小狐狸&#xff0c;或者戴墨镜的企鹅&#xff1f;现在&#xff0c;借助AI大模型的力量&#xff0c;这不再是童话。本文将带你部署一个专为儿童…

作者头像 李华
网站建设 2026/2/27 2:14:54

Qwen3-4B显存碎片化?内存管理优化实战解决方案

Qwen3-4B显存碎片化&#xff1f;内存管理优化实战解决方案 1. 问题现场&#xff1a;为什么Qwen3-4B跑着跑着就OOM了&#xff1f; 你刚把Qwen3-4B-Instruct-2507部署在单张4090D上&#xff0c;网页推理界面顺利打开&#xff0c;输入“写一段春天的短诗”&#xff0c;模型秒回&…

作者头像 李华
网站建设 2026/2/27 17:26:09

2026-01-19-论文阅读-Agentic-Reasoning-for-Large-Language-Models

title: 2026-01-19-论文阅读-Agentic-Reasoning-for-Large-Language-Models date: 2026-01-19 tags: 论文阅读AgentLLM 《Agentic Reasoning for Large Language Models》 一、论文基本信息 原文链接,翻译链接作者:Tianxin Wei1† Ting-Wei Li1† Zhining Liu1† … 关键词:…

作者头像 李华
网站建设 2026/2/28 0:46:04

Speech Seaco Paraformer系统刷新信息:设备类型检测实战验证

Speech Seaco Paraformer系统刷新信息&#xff1a;设备类型检测实战验证 1. 系统概览&#xff1a;一个开箱即用的中文语音识别方案 Speech Seaco Paraformer 是基于阿里 FunASR 框架构建的高性能中文语音识别系统&#xff0c;由科哥完成 WebUI 二次开发与工程化封装。它不是简…

作者头像 李华