千家信息网

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

发表于:2024-10-18 作者:千家信息网编辑
千家信息网最后更新 2024年10月18日,这篇文章主要介绍"C++11中explicit类型转换运算符的实例用法",在日常操作中,相信很多人在C++11中explicit类型转换运算符的实例用法问题上存在疑惑,小编查阅了各式资料,整理出简单好
千家信息网最后更新 2024年10月18日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安全错误 数据库的锁怎样保障安全 网络安全海报创作理念 盐城java软件开发管理 服务器进不了我的世界 软件开发公司有编程吗 传奇外传所有服务器名字 提高网络安全意识方法 我的世界免验证的服务器 白城网络技术培训 怎么在数据库中找到代码 人大复印资料数据库账号购买 我的世界基岩版租赁服务器通用吗 穿越火线吉林服务器哪个好 恒普网络技术有限公司地址 电脑服务器共享文件夹 捌楼陆网络技术有限公司海南 什么是微云服务器 熟悉数据库管理以及网络应用 大学网络安全 图书馆 华大服务器 网络安全可以采用邀请招标吗 重庆万盛区安卓软件开发企业 黑客入侵网络安全概念 网吧多人开机连接不上服务器 软件开发公司经营目标 广州正规的网络安全服务 计算机网络技术学习app 嘉兴建设智慧小区软件开发 免费透传服务器 为什么我的服务器连不上网 如何加强学生网络安全
0