当前位置: 首页 > article >正文

C++学习笔记25:explicit 关键字与隐式类型转换

目录一、什么是隐式类型转换二、为什么会发生这种转换三、隐式类型转换的过程四、explicit 的作用五、什么时候需要 explicit六、C11 后的花括号初始化七、小结一、什么是隐式类型转换在C中有些情况下编译器会自动进行类型转换。比如double d 10;这里 10 是 int 类型但可以自动转换成 double 类型。在类和对象中构造函数也可能发生隐式类型转换。例如class Date { public: Date(int year) : _year(year) , _month(1) , _day(1) { } private: int _year; int _month; int _day; };如果这样写Date d 2024;编译器会把 2024 转换成一个 Date 对象。可以理解为Date d(2024);这就是构造函数产生的隐式类型转换。二、为什么会发生这种转换因为 Date 类中由一个单参数的构造函数。Date(int year)他可以用一个 int 类型的数据构造出一个 Date 对象。所以当写Date d 2024;编译器会认为可以用 2024 构造一个 Date 对象。这种方法虽然简单但有时候也可能让代码含义不够清楚。三、隐式类型转换的过程代码Date d 2024;大致可以理解为先用 2024 构造一个临时 Date 对象 在用这个临时对象初始化 d有些编译器可能会进行优化直接构造 d 但从语法理解上可以先这样认为。四、explicit 的作用如果不希望构造函数发生隐式类型转换可以使用 explicit 关键字。写法class Date { public: explicit Date(int year) : _year(year) , _month(1) , _day(1) { } private: int _year; int _month; int _day; };加上 explicit 关键字后瞎买你这种写法就不允许了Date d 2024; //错误必须显示构造Date d(2024); // 正确也就是说explicit 可以禁止构造函数发生隐式类型转换。五、什么时候需要 explicit如果一个构造函数只有一个参数或者其他参数都有默认值就可能发生隐式类型转换。例如Date(int year)或者Date(int year, int month 1, int day 1)这种构造函数都能支持类似Date d 2024;如果这种转换容易遭阿成误解就建议加 explicit。例如explicit Date(int year, int month 1, int day 1)这样写可以让代码更明确。六、C11 后的花括号初始化C11 之后支持花括号初始化。Date d1{2024}; Date d2{2024, 5, 1};也可能出现这种写法Date d {2024, 5, 1};如果构造函数加了 explicit也会限制这种隐式类型转换。所以 explicit 的作用就是让对象构造更明确避免编译器会自动帮我们做一些不明显的转换。七、小结本篇主要学习了 explicit 关键字和隐式类型转换。需要记住单参数构造函数可能发生隐式类型转换Date d 2024 可能会调用 Date(int year)隐式转换可能生成临时对象explicit 可以禁止构造函数隐式类型转换加了 explicit 后应使用 Date d(2024) 这种显示写法当构造函数可能造成歧义时建议使用 explicit。

相关文章:

C++学习笔记25:explicit 关键字与隐式类型转换

目录 一、什么是隐式类型转换? 二、为什么会发生这种转换? 三、隐式类型转换的过程 四、explicit 的作用 五、什么时候需要 explicit? 六、C11 后的花括号初始化 七、小结 一、什么是隐式类型转换? 在C中,有些…...

Cortex-M3调试中JTAG RESET线的关键作用与实践

1. Cortex-M3调试中的JTAG RESET线必要性解析在嵌入式开发领域,调试接口的可靠性直接决定了开发效率。对于使用Keil MDK和ULINK2调试适配器的工程师而言,Cortex-M3设备的JTAG RESET线连接问题经常引发调试连接失败。虽然理论上Cortex-M3内核通过SYSRESET…...

Bebas Neue字体完全指南:免费商用的现代设计利器

Bebas Neue字体完全指南:免费商用的现代设计利器 【免费下载链接】Bebas-Neue Bebas Neue font 项目地址: https://gitcode.com/gh_mirrors/be/Bebas-Neue 还在寻找一款能为你的设计项目增添专业感的免费字体吗?Bebas Neue字体库正是你需要的完美…...

“AI点单员”真的能替代人工吗?——基于237家门店AB测试的转化率、客单价、复购率三重数据验证(含原始数据集索引)

更多请点击: https://kaifayun.com 第一章:AI Agent餐饮行业应用 AI Agent正以前所未有的深度融入餐饮行业全链路,从智能点餐、后厨协同到供应链优化与顾客情感分析,其核心价值在于将静态规则系统升级为具备感知、推理与自主决策…...

EGO-Planner-v2:零配置开启无人机集群仿真新体验

EGO-Planner-v2:零配置开启无人机集群仿真新体验 【免费下载链接】EGO-Planner-v2 Swarm Playground, the codebase of the paper "Swarm of micro flying robots in the wild" 项目地址: https://gitcode.com/gh_mirrors/eg/EGO-Planner-v2 想要快…...

BE-ToF技术:突破远距离深度成像的创新方案

1. BE-ToF技术概述:突破远距离深度成像的瓶颈深度感知技术在现代计算机视觉系统中扮演着越来越重要的角色,特别是在自动驾驶、机器人导航和三维重建等领域。时间飞行(Time-of-Flight, ToF)成像作为深度感知的主流技术之一,其性能直接决定了这…...

海思HS-Ultra 7L2D边缘AI工控机:99 TOPS算力如何赋能工业视觉与医疗?

1. 项目概述:当AI算力下沉到边缘,我们需要什么样的“工业大脑”?在工业自动化、机器视觉、智慧医疗这些领域摸爬滚打十几年,我亲眼见证了计算架构从集中式云端向边缘侧迁移的浪潮。早期,大家习惯于把海量的传感器数据、…...

基于AXI4-Lite总线与AXI UARTLite IP核实现Zynq PS-PL异构串口扩展

1. 项目概述与核心价值最近在搞一个基于创龙DR1系列核心板的工业网关项目,里面需要同时接入RS232、RS485和RS422三种不同标准的串口设备。如果全用PS端的原生UART,引脚和资源根本不够分,而且布线也是个麻烦事。这时候,FPGA&#x…...

基于RT-Thread与TOF传感器的智能电动滑板主动刹车系统设计

1. 项目概述:从情怀出发的硬件升级之旅几年前,我和几个同学在导师的带领下,捣鼓出了一个基于 Arduino Uno 的电动滑板。那会儿真是干劲十足,白天画图、晚上调代码,傍晚就踩着滑板在校园里飞驰。这个滑板后来成了我的“…...

3分钟学会洛雪音乐音源配置:免费获取全网高品质音乐的终极指南

3分钟学会洛雪音乐音源配置:免费获取全网高品质音乐的终极指南 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 还在为找不到高质量免费音乐资源而烦恼吗?lxmusic-项目为你提…...

SEED-Lab7 XSS攻击实验(Elgg)

SEED-Lab7 XSS攻击实验(Elgg) 文章目录 SEED-Lab7 XSS攻击实验(Elgg)文章目录实验环境实验内容实验步骤DNS SetupTask 1: Posting a Malicious Message to Display an Alert WindowTask 2: Posting a Malicious Message to Display CookiesTask 3: Stealing Cookies from the…...

Xtreme Download Manager终极指南:如何实现500%下载加速

Xtreme Download Manager终极指南:如何实现500%下载加速 【免费下载链接】xdm Powerfull download accelerator and video downloader 项目地址: https://gitcode.com/gh_mirrors/xd/xdm 你是否经常遇到下载速度缓慢、视频无法保存、大文件下载中断的困扰&am…...

百度网盘Mac版终极加速教程:三步告别限速,免费享受SVIP极速下载

百度网盘Mac版终极加速教程:三步告别限速,免费享受SVIP极速下载 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 你是否曾经面对…...

Bebas Neue:现代几何字体的开源革命与专业应用指南

Bebas Neue:现代几何字体的开源革命与专业应用指南 【免费下载链接】Bebas-Neue Bebas Neue font 项目地址: https://gitcode.com/gh_mirrors/be/Bebas-Neue Bebas Neue 是一款备受全球设计师推崇的开源几何字体,以其简洁有力的线条和卓越的视觉冲…...

技术革新:FModel如何重塑游戏资源逆向工程与创作流程

技术革新:FModel如何重塑游戏资源逆向工程与创作流程 【免费下载链接】FModel Unreal Engine Archives Explorer 项目地址: https://gitcode.com/gh_mirrors/fm/FModel 在游戏开发与内容创作的生态系统中,资源逆向工程长期以来都是一项技术壁垒高…...

Excel MCP Server:革命性的无Excel数据处理引擎

Excel MCP Server:革命性的无Excel数据处理引擎 【免费下载链接】excel-mcp-server A Model Context Protocol server for Excel file manipulation 项目地址: https://gitcode.com/gh_mirrors/ex/excel-mcp-server 在数据处理领域,传统Excel依赖…...

3步快速上手OneMore:让你的OneNote效率翻倍的完整指南

3步快速上手OneMore:让你的OneNote效率翻倍的完整指南 【免费下载链接】OneMore A OneNote add-in with simple, yet powerful and useful features 项目地址: https://gitcode.com/gh_mirrors/on/OneMore OneMore是一款专为OneNote设计的免费增强插件&#…...

瑞芯微RV1126边缘AI开发套件实战:从模型部署到工业应用

1. 项目概述与核心价值最近几年,边缘计算和人工智能的结合,正在从实验室和云端大规模地走向我们身边的真实场景。无论是工厂里实时检测产品瑕疵的摄像头,还是社区里识别异常行为的安防设备,都离不开一个核心:一个能放在…...

Seraphine:基于LCU API的英雄联盟智能助手技术解析

Seraphine:基于LCU API的英雄联盟智能助手技术解析 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine Seraphine是一款基于英雄联盟官方LCU API开发的智能游戏辅助工具,专为英雄联盟玩家提…...

嵌入式气体传感器模组选型、集成与工程实践全解析

1. 项目概述:从“感知”到“决策”的桥梁在工业自动化、环境监测乃至我们日常的智能家居设备里,气体传感器模组正扮演着越来越关键的角色。它不像一个独立的传感器探头那么简单,而是一个集成了传感元件、信号调理、数据处理甚至通讯接口的完整…...

高性能混合数据聚类算法:k-prototypes架构设计与性能优化深度解析

高性能混合数据聚类算法:k-prototypes架构设计与性能优化深度解析 【免费下载链接】kmodes Python implementations of the k-modes and k-prototypes clustering algorithms, for clustering categorical data 项目地址: https://gitcode.com/gh_mirrors/km/kmod…...

如何高效使用Gofile下载器:从单文件到批量下载的完整指南

如何高效使用Gofile下载器:从单文件到批量下载的完整指南 【免费下载链接】gofile-downloader Download files from https://gofile.io 项目地址: https://gitcode.com/gh_mirrors/go/gofile-downloader Gofile下载器是一款专门用于从Gofile.io平台下载文件的…...

如何利用Chanlun-Pro实现智能缠论量化交易:3步掌握市场结构识别

如何利用Chanlun-Pro实现智能缠论量化交易:3步掌握市场结构识别 【免费下载链接】chanlun-pro 基于缠中说禅所讲缠论理论,以便量化分析市场行情的工具 项目地址: https://gitcode.com/gh_mirrors/ch/chanlun-pro 在金融市场日益复杂的今天&#x…...

3个步骤掌握OBS多平台推流插件:告别重复操作,实现一键多平台直播同步

3个步骤掌握OBS多平台推流插件:告别重复操作,实现一键多平台直播同步 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp OBS多平台推流插件(obs-multi-r…...

5个步骤掌握ScriptHookV:GTA V脚本开发终极指南

5个步骤掌握ScriptHookV:GTA V脚本开发终极指南 【免费下载链接】ScriptHookV An open source hook into GTAV for loading offline mods 项目地址: https://gitcode.com/gh_mirrors/sc/ScriptHookV 你是否曾梦想过为GTA V创造属于自己的游戏模组&#xff1f…...

5分钟掌握Windows字体清晰度优化:Better ClearType Tuner终极指南

5分钟掌握Windows字体清晰度优化:Better ClearType Tuner终极指南 【免费下载链接】BetterClearTypeTuner A better way to configure ClearType font smoothing on Windows 10. 项目地址: https://gitcode.com/gh_mirrors/be/BetterClearTypeTuner 还在为Wi…...

黑苹果终极简化方案:OpCore Simplify 让你的OpenCore配置变得前所未有的简单

黑苹果终极简化方案:OpCore Simplify 让你的OpenCore配置变得前所未有的简单 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的…...

揭开网易游戏资源黑盒:3个步骤让你成为NPK解包专家

揭开网易游戏资源黑盒:3个步骤让你成为NPK解包专家 【免费下载链接】unnpk 解包网易游戏NeoX引擎NPK文件,如阴阳师、魔法禁书目录。 项目地址: https://gitcode.com/gh_mirrors/un/unnpk 想象一下,当你打开一个网易游戏的安装包&#…...

聚焦养老服务管理 以 AI 课堂革新实训教学模式

一、引言在养老产业数智化转型背景下,智慧健康养老服务与管理专业实训室建设需紧扣产业需求。AI 课堂作为教学数字化升级的核心载体,可有效破解传统实训教学与岗位需求脱节、高危场景难实操、教学评价不精准等痛点,为实训室建设提供实用可行的…...

如何用Easy Voice Toolkit轻松实现语音AI全流程:从识别到合成的完整指南

如何用Easy Voice Toolkit轻松实现语音AI全流程:从识别到合成的完整指南 【免费下载链接】Easy-Voice-Toolkit A user-friendly toolkit for voice recgonition/transcription/conversion etc. | 简单易用的语音工具箱 项目地址: https://gitcode.com/gh_mirrors/…...