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

【QT】-隐式转换 explicit用法

通俗易懂的解释:隐式转换 vs 显式转换

  1. 什么是隐式转换?
    隐式转换就是编译器偷偷帮你做的类型转换,你甚至都没意识到它发生了。
    例子:
    cpp
    运行
    double x = 5; // 隐式:int → double(5 变成 5.0)
    int y = x * 2.5; // 隐式:double → int(截断小数部分)

  2. 构造函数的隐式转换
    当构造函数只有一个必需参数时,编译器可能会用它来偷偷创建对象。
    示例(无 explicit):
    cpp
    运行
    class Pizza {
    public:
    Pizza(int size) { // 单参数构造函数
    cout << “制作了一个” << size << “寸的披萨” << endl;
    }
    };

void orderPizza(Pizza p) {
cout << “订购成功!” << endl;
}

int main() {
orderPizza(12); // 隐式转换:int → Pizza
// 等价于:orderPizza(Pizza(12));
}
问题:你原本只想传一个数字,但编译器偷偷创建了一个 Pizza 对象,可能导致意外行为。
3. explicit 禁止隐式转换
加了 explicit 后:
cpp
运行
class Pizza

http://www.lryc.cn/news/582462.html

相关文章:

  • React18+TypeScript状态管理最佳实践
  • 说说SpringBoot常用的注解?
  • 【Nginx】Nginx代理WebSocket
  • Ollama+OpenWebUI 0.42+0.3.35 最新版一键安装教程,解决手动更新失败问题
  • kafka如何让消息均匀的写入到每个partition
  • OpenWebUI(5)源码学习-后端socket通信模块
  • App Trace功能实战:一键拉起应用实践
  • 【保姆级图文详解】RAG 实战(Spring AI + 本地知识库)旅游知识库问答
  • 微软上线 Deep Research 预览版:o3+必应赋能研究自动化
  • OGRE 3D----6. 背景图片渲染实现详解
  • 【Unity3D】微信小游戏适配安全区域或胶囊控件(圆圈按钮)水平高度一致方案
  • element el-table渲染二维对象数组
  • 什么是 3D 文件?
  • 开源 python 应用 开发(三)python语法介绍
  • 【电脑】主要组成部分
  • 装备制造数字孪生底座平台
  • 【网络】Linux 内核优化实战 - net.ipv4.tcp_syn_retries
  • 利用AI技术快速提升图片编辑效率的方法
  • 数据结构 --- 栈
  • django-ckeditor配置html5video实现视频上传与播放
  • word中的单位详解
  • 算法化资本——智能投顾技术重构金融生态的深度解析
  • 使用阿里云/腾讯云安装完成mysql使用不了
  • 分库分表之实战-sharding-JDBC广播表
  • JavaScript基础篇——第二章 类型转换与常见错误解析
  • 《UE5_C++多人TPS完整教程》学习笔记42 ——《P43 瞄准(Aiming)》
  • 250708-Svelte项目从Debian迁移到无法联网的RHEL全流程指南
  • 计算机网络:(八)网络层(中)IP层转发分组的过程与网际控制报文协议 ICMP
  • [论文阅读] 软件工程 | 自适应CPS中的人机协作与伦理
  • 自动驾驶感知系统