if (static_cast(x)) 与 if (x)

2024-04-16

我有一位同事经常在条件语句中对 bool 进行显式强制转换,如下所示:

SomeType *ptr = /* some value */;
if (static_cast<bool>(ptr)) {
    // do something
}

但我一直找不到如此冗长的充分理由。有任何想法吗?

编辑:同事说这是为了清晰和明确,但我认为这个解释不是很令人信服。我在这里提出这个问题是为了看看其他 C++ 专家是否建议这样做,如果是的话,也许会出现一个更有说服力的论点。


一般来说,客观上没有充分的理由这样做。对于指针来说,它实际上是负面有用的。指针转换为bool是 C++ 中定义明确的操作,自 C 时代以来(也可能更早)就已经存在。这是每个 C++ 程序员都知道的基本习惯用法需要学习。显式进行转换会发出这样的消息:显式转换与隐式上下文转换在某种程度上有所不同,但事实并非如此。

另外,一个不知道什么的用户if(ptr)可能也不知道将指针转换为什么bool会做的。所以if(static_cast<bool>(ptr))甚至不能说是更清楚了;if(ptr != nullptr)对于新手发生的事情更加清楚。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

if (static_cast(x)) 与 if (x) 的相关文章

  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过
  • 正则表达式 - 匹配不包含字符串的模式

    我对正则表达式很陌生 并且一直在寻找方法来做到这一点 但没有成功 给定一个字符串 我想删除以 abc 开头 以 abc 结尾且中间不包含 abc 的任何模式 如果我做 abc abc abc 它将匹配以 b 开头 以 abc 结尾并且中间包
  • 错误:模块“html”不提供视图引擎(Express)

    我正在尝试设置一个简单的路由应用程序 但在渲染页面时不断遇到错误 Error Module html does not provide a view engine 奇怪的是我已经在 app js 文件中指定了视图引擎 但仍然收到错误 app
  • 我如何用 javascript/jquery 进行两指拖动?

    我正在尝试创建当有两个手指放在 div 上时拖动 div 的功能 我已将 div 绑定到 touchstart 和 touchmove 事件 我只是不确定如何编写这些函数 就像是if event originalEvent targetTo
  • Android 的代码覆盖率[重复]

    这个问题在这里已经有答案了 可能的重复 Android测试代码覆盖率 Eclipse https stackoverflow com questions 3282702 android test code coverage eclipse
  • 关闭扫描仪是否会影响性能

    我正在解决一个竞争问题 在问题中 我正在使用扫描仪获取用户输入 这是 2 个代码段 一个关闭扫描器 一个不关闭扫描器 关闭扫描仪 import java util Scanner public class JImSelection publ
  • Angular 2:使用正则表达式进行数字验证

    我正在尝试验证 IE 11 中的数字字段
  • UWP 应用程序在与商店关联后崩溃

    我正在为 Windows 创建一个 cordova 应用程序 将应用程序与商店关联后 应用程序起始页变为白色空白 如果应用程序使用包标识名称 com something moretext 则该应用程序可以正常工作 但我的商店包身份名称是 5
  • Swift 中的 quitFirstResponder

    我怎样才能用Apple的新语言实现它 Objective C 代码 void touchesBegan NSSet touches withEvent UIEvent event for UIView view in self view s
  • 纯旧 PHP 对象 (POPO) 一词的确切含义是什么?

    我想了解一下波波 我搜索了 popo 发现它代表 Plain Old Php Object 但我不确定 Plain Old Php Object 的确切含义 我想知道什么是 popo 以及在哪里使用它 谢谢 普通旧 在此处插入语言 对象是一
  • 文本处理问题:删除其中一列不包含特定值的行

    我有一个制表符分隔的文件 如下所示 input sequence match sequence score receptor group epitope antigen organism ASRPPGGVNEQF ASRPPGGVNEQF
  • 如何用LoaderManager自动重新查询

    我有一个应用程序显示来自 SQLite DB 的数据 并且数据不断变化 所以显然 我认为我应该使用 LoaderManager 来显示数据 我读过一些关于将 LoaderManager 与 SQLite 结合使用的内容 然后看到了亚历克斯
  • C#中为线程指定特殊的cpu

    我有 2 个线程 我想告诉其中一个在第一个 cpu 上运行 第二个在第二个 cpu 上运行 例如在具有两个 cpu 的机器中 我怎样才能做到这一点 这是我的代码 UCI UCIMain new UCI Thread UCIThread ne
  • JavaScript 中“键”的类型是什么?

    当我失去焦点并开始思考一个愚蠢的问题时 我遇到了这样的时刻 var a b value b 的类型是什么 我的意思不是 值 的类型 而是标记为 b 的实际键 背景 当我必须创建一个字符串键时 我开始想知道这一点 var a b value
  • 从 Teradata sql Assistant 将结果导出到 Excel 工作表

    我想通过在 Teradata SQL Assistant 中运行查询将结果导出到 Excel 工作表中 我使用了复制粘贴 但没有用 提前致谢 如果您将答案返回到 SQL Assistant 您应该能够从 文件 菜单中选择 保存答案集 然后
  • 如何在 Symfony 4 中为测试环境设置数据库

    我对如何在 symfony 4 中为测试环境设置数据库感到困惑 我曾经在配置测试 ymlsymfony 3 及以下版本中的文件 最佳做法是什么 我应该重新创建一个学说 yaml文件输入配置 包 测试 该文档提到如何通过编辑 phpunit
  • 将 read.csv 与符号链接文件一起使用

    我正在尝试做什么 我的源文件非常大 我想避免将其复制到其他文件夹中 我决定创建一个指向大文件的符号链接并想使用read csv读取文件 文件夹结构 项目1 数据 源文件 csv 项目2 数据 别名到源文件 csv 什么地方出了错 读取源文件
  • 为什么 FMA _mm256_fmadd_pd() 内在函数有 3 个 asm 助记符:“vfmadd132pd”、“231”和“213”?

    有人可以向我解释一下为什么融合乘法累加指令有 3 种变体 vfmadd132pd vfmadd231pd and vfmadd213pd 而只有一个 C 内在函数 mm256 fmadd pd 为了简单起见 在 AT T 语法中 有什么区别
  • 如何使用 C# 以低分辨率形式提供高分辨率图像

    尝试使用 300dpi tif 图像在网络上显示 目前 当用户上传图像时 我正在动态创建缩略图 如果创建的页面引用宽度为 500x500px 的高分辨率图像 我可以使用相同的功能即时转换为 gif jpg 吗 将创建的 jpg 的即将分辨率
  • GAE 无法部署到 App Engine

    我正在尝试从 Eclipse 发布 Web 应用程序 我在 GAE 上创建了四个项目 可以通过登录我的帐户并查看控制台来查看它们 我已经改变了appengine web xml到项目的应用程序 ID 如果我将其更改为 GAE 上第一个创建的

随机推荐

  • 如何使用更改侦听器 JavaFX 在两个 ListView 之间移动项目

    我有两个ListViews allStudentsList其中已经填充了项目 currentStudentList没有 我的目标是当用户选择一个项目时allStudentList是为了将该项目移入currentStudentList 我通过
  • ANTLR 实现类似Python的缩进相关语法的最简单方法是什么?

    我正在尝试实现类似Python的缩进相关语法 来源示例 ABC QWE CDE EFG EFG CDE ABC QWE ZXC 正如我所看到的 我需要的是实现两个标记 INDENT 和 DEDENT 所以我可以编写如下内容 grammar
  • 如何在 GNU Prolog 中使用“long int”?

    所以基本上看来 GNU Prolog 在我的 32 位 x86 Linux 上使用 28 位整数 下面的代码无法编译 foo A A0 is 0xdeadbeef A1 is A0 gt gt 8 A2 is A0 gt gt 16 A3
  • 在界面中强制执行“等于”

    我有一个接口 我希望实现该接口的每个人都实现一个重写的 等于 方法 有没有办法确保这种情况发生 我猜想发生这种情况的方式是 实现我的接口的类将自动从 Object 获取 equals 从而使接口满意 不 你只能创建一个抽象类 而不是像这样的
  • 使用服务器端脚本 (PHP) 创建 SVG 图形

    有没有办法使用 PHP 脚本生成 HTML 文件 该脚本嵌入了 SVG 其中 SVG 本身是由 PHP 脚本动态生成的 基本上 我想向客户端显示动态生成的 SVG 图像 但是 也仅引用外部源 而 PHP 仅生成当前 HTML 页面 而不是外
  • Rails:语法错误,意外的keyword_ensure,期望$end

    我正在创建一个非常基本的 Rails 应用程序 学习教程 但无法理解为什么会出现此错误 我已尝试排除故障但无济于事 My code ul class nav pull right li li li li li li ul
  • 如何将操作栏与 Xamarin 和 MvvmCross 一起使用

    我看到 Xamarin 最近作为组件发布http components xamarin com view xamandroidsupportv7appcompat http components xamarin com view xaman
  • 如何更新 C# 和 SQL Server 中的值? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这是我的程序 应该更新包含 3 列的表中的分数 id nickname scor Otherform id1 is the id需要更新的
  • Docker for ARM64 (Raspberry Pi 4) 上的 Android SDK 用于构建 APK

    我正在尝试创建一个ARM64 Docker 镜像它能够构建我的 React Native 应用程序的 apk 文件 背景 为了练习目的 我使用 5 个 Raspberry Pi 4 板构建了一个 Kubernetes 集群 一切工作正常 J
  • 按数组类型查询 - MongoDB

    我必须按类型查询我的 mongoDB 集合 假设我有这两个文件hello收藏 id ObjectId 56684ee0f597654b99d0d636 name Scrooge surname McDuck address road Mon
  • 如何在 Python 中发送包含一些非 ASCII 字符的电子邮件?

    我正在使用 Python 3 7 并尝试使用 smtplib 发送电子邮件 只要消息不包含任何土耳其字符 例如 我的脚本就可以完美运行 到目前为止我发现的唯一可行的解 决方案是使用 string string encode ascii ig
  • 设置 UIPopOverController 大小

    我有一个view里面有一堆按钮UIScrollView 当用户按下按钮时 我希望显示一个 UIPopOverController 指向所选按钮 它有点工作 但是弹出窗口的大小错误并且指向视图中的随机点 这是我的代码 void detail
  • 如何将 Maven 存储库 jar 添加到 Eclipse 构建路径?

    从 Eclipse 中 我可以在 Maven 存储库视图中看到所有必需的 jar 但我有大约 100 个缺少 jar 文件的错误 所以我设置了 M2 REPO 环境变量 我已经从命令行运行了 mvn eclipse eclipse 命令 当
  • WINAPI 带有自定义边框的编辑控件

    在纯 WinAPI 无 MFC 中实现编辑控件的自定义圆形边框的正确方法是什么 我需要像这样的边框编辑 我应该子类化编辑控件并在 WM NCPAINT 或类似的东西中进行自定义绘画吗 我想你有两个选择 正如你所说 你可以子类化并覆盖WM N
  • 从 Django 调用 Scrapy Spider

    我有一个项目 在同一工作区中包含 django 和 scrapy 文件夹 my project django project django project settings py app1 app2 manage py scrapy pro
  • 循环日期范围

    在Python3中 我可以像这样循环遍历一系列日期 import datetime dt0 datetime datetime 2017 1 1 0 0 0 dt1 datetime datetime 2017 1 5 0 0 0 dt d
  • Spring @Async 限制线程数

    我的问题与这个非常相似 Async 阻止一个线程继续执行 直到其他线程完成 https stackoverflow com questions 4324212 async prevent a thread to continue until
  • Discord 机器人添加对消息的反应discord.py(无自定义表情符号)

    我一直在尝试使用discord py创建一个机器人 在阅读后使用discord py添加对消息的反应this https stackoverflow com questions 48982061 how do you have a bot
  • xamarin.forms 中的导航如何工作?

    由于我在 android 中的应用程序中使用 xamarin forms 因此我必须从一个页面导航到另一个页面 我的问题是 从一个页面导航到另一页面是否会将其添加到导航堆栈中 例如 如果我的应用程序有导航 例如第1页 gt 第2页 gt 第
  • if (static_cast(x)) 与 if (x)

    我有一位同事经常在条件语句中对 bool 进行显式强制转换 如下所示 SomeType ptr some value if static cast