千家信息网

C++11中explicit类型转换运算符的实例用法

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要介绍"C++11中explicit类型转换运算符的实例用法",在日常操作中,相信很多人在C++11中explicit类型转换运算符的实例用法问题上存在疑惑,小编查阅了各式资料,整理出简单好
千家信息网最后更新 2025年02月02日C++11中explicit类型转换运算符的实例用法

这篇文章主要介绍"C++11中explicit类型转换运算符的实例用法",在日常操作中,相信很多人在C++11中explicit类型转换运算符的实例用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++11中explicit类型转换运算符的实例用法"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

类型转换运算符

看下面的例子:

这时一个复数类的雏形,定义了一个double类型的类型转换运算符。有了它以后,可以像下面这样使用:

输出结果如下:

complex不支持输出运算符,所以编译器努力将c1转换成double类型以后输出。到目前为止都挺好。

真的是想转换成double?

再看下面的代码:

如果从数学的角度来讲,应该输出2.23606。但实际上,这段代码连编译都通不过。其原因是对于这段代码编译器有两种选择:一个是将c1转换称double然后加1;另一个是将1转换为复数(1+0i)以后执行复数加法。

需要程序员给个想法。

显式的类型转换运算符

为了消除二义性,一个办法就是使用explicit禁止隐式的double类型转换。代码如下:

由于无法进行隐式类型转换,所以下面的代码会出现编译错误:

这并不是什么大问题,因为转换为double输出这件事本身对不对都不好讲。代码中已经通过输出运算符重载提供了复数形式的输出功能。

输出如下:

到此,关于"C++11中explicit类型转换运算符的实例用法"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

类型 运算符 运算 输出 代码 实例 复数 学习 编译 面的 更多 编译器 问题 帮助 不对 实用 接下来 不好 二义性 例子 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发有ui界面兼容性问题 什么是图片托管服务器 租号服务器环境异常 网络安全审计中 VB利用数据库做的登录界面 数据库未来的发展趋势的是 2网络安全黑板报幼儿园 mysql数据库归档日志 公安网络安全管理去基层 小学生的网络安全防范教育 notes 服务器 互联网软件开发的发展 棋牌自动交易软件开发 泰安有软件开发公司吗 魔兽世界5.48物品数据库 山东图书馆数据全文数据库 pon管理服务器 郑州河马网络技术有限公司 关系数据库中关系被称为什么 四川轻化工数据库考试试卷 中金通宝网络技术有限公司 网络安全宣传检察小哥哥 诸城知鱼互联网科技有限公司 广东数字桥网络技术有限公司 计算机如何备份数据库 北理网络安全学科评估 档案馆网络安全自查工作方案 省国土资源局网络安全培训 软件开发专业职业学校 郑州河马网络技术有限公司
0