【C++入门】Cyber尖层的虚实重构—— 【类与对象】类型转换

⚡ CYBER_PROFILE ⚡
/// SYSTEM READY ///


WARNING \]: DETECTING HIGH ENERGY **🌊 🌉 🌊 心手合一 · 水到渠成** ![分隔符](https://i-blog.csdnimg.cn/direct/60a3de2294e9439abad47378e657b337.gif) |------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------| | **\>\>\> ACCESS TERMINAL \<\<\<** || | [**\[ 🦾 作者主页 \]**](https://blog.csdn.net/fengtinghuqu520?spm=1000.2115.3001.5343) | [**\[ 🔥 C语言核心 \]**](https://blog.csdn.net/fengtinghuqu520/category_12955956.html) | | [**\[ 💾 编程百度 \]**](https://blog.csdn.net/fengtinghuqu520/category_13083835.html) | [**\[ 📡 代码仓库 \]**](https://blog.csdn.net/fengtinghuqu520/article/details/147275999?spm=1001.2014.3001.5502) | --------------------------------------- Running Process: 100% \| Latency: 0ms *** ** * ** *** #### 索引与导读 * [由构造函数引起的隐式类型转换](#由构造函数引起的隐式类型转换) * [一、内置类型隐式转换为类类型](#一、内置类型隐式转换为类类型) * [二、使用 explicit 禁止隐式转换](#二、使用 explicit 禁止隐式转换) * [三、类类型对象之间的隐式转换](#三、类类型对象之间的隐式转换) * [💡 知识点补充:多参数构造函数的隐式转换](#💡 知识点补充:多参数构造函数的隐式转换) * [💻结尾--- 核心连接协议](#💻结尾— 核心连接协议) ## 由构造函数引起的隐式类型转换 当一个构造函数只需要一个参数时,编译器可以用它将该参数类型的值\*\*"自动"\*\*转换为类对象 ## 一、内置类型隐式转换为类类型 如果一个类定义了一个接受某种内置类型(如 `int`, `double`)的构造函数,`C++` 允许你直接把该内置类型赋值给类对象 ```cpp #include #include class Date { public: // 相关的构造函数:接受一个内置类型 int Date(int year) : _year(year) { std::cout << "Date(int) 构造函数被调用" << std::endl; } private: int _year; }; int main() { Date d1 = 2024; return 0; } ``` **╔═█▓▒░ CODE CORE 🔥** **┌─────────────┐ │ 代码关键点 │Date d1 = 2024; └─────────────┘** * **隐式类型转换:** `int` 转换为 `Date` 对象 * **编译器实际上执行了:** `Date temp(2024); d1 = temp;` *** ** * ** *** ## 二、使用 explicit 禁止隐式转换 有时候这种"自动转换"会导致意外的 `Bug`(比如你本意是传个数字,结果编译器偷偷帮你造了个对象) 使**用 `explicit` 关键字可以锁死这个行为** ```cpp class SmartDate { public: // 使用 explicit 关键字 explicit SmartDate(int year) : _year(year) {} private: int _year; }; int main() { // SmartDate d2 = 2024; // 编译报错!不再支持隐式转换 // 必须显式调用构造函数 SmartDate d3(2024); SmartDate d4 = SmartDate(2025); return 0; } ``` *** ** * ** *** ## 三、类类型对象之间的隐式转换 不仅仅是内置类型,两个不同的类对象之间也可以进行隐式转换,前提是目标类有一个构造函数能接收源类的对象 ```cpp class Time { public: int _hour; Time(int hour) : _hour(hour) {} }; class DateTime { public: // 构造函数参数是另一个类对象 (Time) DateTime(const Time& t) : _hour(t._hour) { std::cout << "Time 对象隐式转换为 DateTime 对象" << std::endl; } private: int _hour; }; int main() { Time t1(12); // 隐式转换:Time -> DateTime DateTime dt = t1; return 0; } ``` *** ** * ** *** ## 💡 知识点补充:多参数构造函数的隐式转换 在 C++11 之前,隐式转换通常只发生在一个参数的构造函数上。但 C++11 引入列表初始化后,多个参数也可以触发隐式转换 ```cpp class Coordinate { public: Coordinate(int x, int y) : _x(x), _y(y) { std::cout << "Coordinate(int, int) 被调用" << std::endl; } private: int _x, _y; }; int main() { // 使用花括号进行多参数隐式转换 (C++11) Coordinate c = {10, 20}; // 同样,如果你在构造函数前加了 explicit,上面这行就会报错 return 0; } ``` *** ** * ** *** ## 💻结尾--- 核心连接协议 **警告:** 🌠🌠正在接入底层技术矩阵。如果你已成功破解学习中的逻辑断层,请执行以下指令序列以同步数据:🌠🌠 *** ** * ** *** **【📡】 建立深度链接:** **关注**本终端。在赛博丛林中深耕底层架构,从原始代码到进阶协议,同步见证每一次系统升级。 **【⚡】 能量过载分发:** 执行**点赞**操作。通过高带宽分发,让优质模组在信息流中高亮显示,赋予知识跨维度的传播力。 **【💾】 离线缓存核心:** 将本页加入**收藏**。把这些高频实战逻辑存入你的离线存储器,在遭遇系统崩溃或需要离线检索时,实现瞬时读取。 **【💬】 协议加密解密:** 在**评论区**留下你的散列码。分享你曾遭遇的代码冲突或系统漏洞(那些年踩过的坑),通过交互式编译共同绕过技术陷阱。 **【🛰️】 信号频率投票:** 通过**投票**发射你的选择。你的每一次点击都在重新定义矩阵的进化方向,决定下一个被全量拆解的技术节点。 *** ** * ** *** ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/57b03915c54b43a7a03fa92dbbfe57c3.gif) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0905dc972de8414bb602715de3f866ee.gif)

相关推荐
John_ToDebug39 分钟前
浏览器扩展延迟加载优化实战:如何让浏览器启动速度提升50%
c++·chrome·windows
是娇娇公主~39 分钟前
C++ 中 std::deque 的原理?它内部是如何实现的?
开发语言·c++·stl
SuperEugene1 小时前
Axios 接口请求规范实战:请求参数 / 响应处理 / 异常兜底,避坑中后台 API 调用混乱|API 与异步请求规范篇
开发语言·前端·javascript·vue.js·前端框架·axios
xuxie992 小时前
N11 ARM-irq
java·开发语言
wefly20173 小时前
从使用到原理,深度解析m3u8live.cn—— 基于 HLS.js 的 M3U8 在线播放器实现
java·开发语言·前端·javascript·ecmascript·php·m3u8
luanma1509803 小时前
PHP vs C++:编程语言终极对决
开发语言·c++·php
寂静or沉默3 小时前
2026最新Java岗位从P5-P7的成长面试进阶资源分享!
java·开发语言·面试
csdn_aspnet3 小时前
C/C++ 两个凸多边形之间的切线(Tangents between two Convex Polygons)
c语言·c++·算法
新缸中之脑4 小时前
用 Google Stitch 重构设计系统
重构
kyriewen114 小时前
给浏览器画个圈:CSS contain 如何让页面从“卡成PPT”变“丝滑如德芙”
开发语言·前端·javascript·css·chrome·typescript·ecmascript