【C++自我精讲】基础系列五 隐式转换和显示转换

2023-11-02


C++自我精讲】基础系列五 隐式转换和显示转换


前言


 1)C++的类型转换分为两种,一种为隐式转换,另一种为显式转换。


 2)C++中应该尽量不要使用转换,尽量使用显式转换来代替隐式转换。


1 隐式转换


定义:隐式转换是系统跟据程序的需要而自动转换的。


1C++类型(char,int,float,long,double)的隐式转换:


     算术表达式隐式转换顺序为:

      1char - int - long - double

     2float - double


//1)算术表达式

int m = 10;

double n = m;//n = 10.0;隐式把m转为double类型

int m = 10;

float f = 10.0;

double d = m + f;//n = 20.0;隐式把mf转为double类型

//2)赋值

int *p = NULL; //NULL(0)隐式转换为int*类型的空指针值

//3)函数入参

float add(float f); 

add(2); //2隐式转换为float类型

//4)函数返回值

double minus(int a, int b)

{ 

    returna - b; //返回值隐式转换为double类型

}


2C++类对象的隐式转换:


void fun(CTest test);

class CTest

{

public:

    CTest(int m = 0);

}

fun(20);//隐式转换


2 显式转换


定义:显式转换也叫强制转换,是自己主动让这个类型转换成别的类型。


1C++类型(char,int,float,long,double)的显式转换:


int m = 5;

char c = (char)m;//显式把m转为char类型

double d = 2.0;

int i = 1;

i += static_cast<int>(d);//显式把d转换为int类型


2C++类对象的显式转换:当类构造函数只有一个参数或除了第一个参数外其余参数都有默认值时,则此类有隐含的类型转换操作符(隐式转换),但有时隐式转换并不是我们想要的,可在构造函数前加上关键字explicit,来指定显式调用。

 

void fun(CTest test);

class CTest

{

public:

    explicitCTest(int m = 0);

}

fun(20);//error 隐式转换

fun(static_cast<CTest>(20)); //ok 显式转换


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【C++自我精讲】基础系列五 隐式转换和显示转换 的相关文章

  • 陶瓷电容的ESR-谐振频率去哪儿查?

    B站视频演示 陶瓷电容的ESR 谐振频率去哪儿查 https www bilibili com video BV1wT4y1J7oL from search seid 12386875788285776321 建议使用低ESR的电容 如陶瓷
  • Mybatis分页查询的实现(Rowbounds和PageHelper)

    我们实现查询除了 org junit Test public void test02 SqlSession session MybatisUtil getSession UserDao mapper session getMapper Us
  • Python + Selenium(二十六)模拟手机浏览器

    现在的 IT 以移动互联网为主 所以一般网站系统都会支持移动模式 移动设备与 PC 网页浏览区别最大的就是分辨率 大型网站为了体验使用移动设备访问时都会专门提供移动版本 而其他很多站点也是采用响应式设计 也可以支持移动设备以较好的访问 我们
  • Python项目:外星人入侵(一)

    1 安装Pygame 使用pip模块下载并安装Python包 要安装Pygame 在终端提示符下执行如下命令 下载完成 2 创建Pygame窗口及响应用户输入 新建文件夹 将其保存为alien invasion py 在其中输入以下代码 i
  • EC200U open方案环境搭建

    EC200U open方案环境搭建 1 资源 平台 UIS8910DM 500MHz Cortex A5 频段 LTE Cat 1 上行最大5M 下行最大10M LTE FDD B1 B3 B5 B8 LTE TDD B34 B38 B39
  • centOS 7下无法启动网络(service network start)错误解决办法

    问题描述 打开虚拟机 启动CentOS7 检查网络不通 重启service network restart 不行 报错 报错信息 Restarting network via systemctl Job for network servic
  • R极简教程:R语言和RStudio的安装

    R极简教程 R语言和RStudio的安装 R语言是一种广泛使用的统计分析和数据可视化编程语言 RStudio是一个强大的集成开发环境 IDE 提供了便捷的代码编辑 调试和数据可视化工具 本教程将详细介绍如何安装R语言和RStudio 并提供
  • ng: Can't bind to 'ngModel' since it isn't a known property of 'input'. - Angular 6

    出现的问题 ng Can t bind to ngModel since it isn t a known property of input 解决方法 导入 FormsModule 到 app module ts 如下代码粉色标记 imp
  • C++"char"类型的一些解释

    C char 类型的一些解释 char 类型 char 类型的cin和cout 说明 本文适合初学者阅读 为方便叙述和理解 本文牺牲部分严谨性 本文中的概念 数字 代表整数等日常意义上的数而并非书写符号 char 类型 C 中用char类型
  • DRAM 内存介绍(一)

    参考资料 http www anandtech com show 3851 everything you always wanted to know about sdram memory but were afraid to ask SDR
  • (称重问题)假设你有8个球,其中一个略微重一些,但是找出这个球的惟一方法是将两个球放在天平上对比

    问题描述 假设你有8个球 其中一个略微重一些 但是找出这个球的惟一方法是将两个球放在天平上对比 最少要称多少次才能找出这个较重的球 解答思路 至少要称2次 将8个球分成3份 其中2份每份有3个球 设为A B 剩下一份有2个球 设为C 第一次
  • CSS鼠标特效【动画跟随】

    JS CSS body background 111
  • 从 Twitter 运维技术经验可以学到什么

    没有一个网站的性能像 Twitter 这样这么令人牵肠挂肚 看见那条大鲸鱼总是让人感觉很无奈 Twitter 的运维专家 John Adams 在 Velocity 2009 上做了一篇题为 Fixing Twitter 的技术分享 PDF
  • QML Canvas 保存画布内容

    作者 一去 二三里 个人微信号 iwaleon 微信公众号 高效程序员 不知大家想过没有 我们好不容易在 Canvas 上绘制了各种图形 该如何把它保存起来呢 比如 我们实现了一个画板 当用户制作完成自己的作品之后 是不是要将其保存起来 以
  • 关于keil编译STM32例程出现错误的解决方法

    文章目录 错误示例 我的实际操作一 实际没有解决 我的实际操作二 真相大白 用户名没有修改 还是中文 用户名已经修改 乱码原因 学习经验 错误示例 错误如下所示 OBJ LED axf error L6002U Could not open
  • 基于python的股票客户流失数据分析模型

    目录 1 案例背景 2 2 读取数据 2 3 划分特征变量和目标变量 3 4 模型的搭建和使用 3 5 模型的使用 4 6 ROC曲线对模型的评估 7 7 总结 10 8 参考文献 10 9 致谢 10 1 案例背景 在进行一笔股票交易时候
  • 机器学习库--dlib

    dlib是什么呢 见面了 总要认识一下吧 dlib其实就是一个跨平台的用C 编写的代码库 这个库的机器学习算法和工具可以用来解决现实世界的很多工程问题 它在工业界和学术界有着广泛的应用 主要在机器人 嵌入式设备 手机以及高性能计算设备上有着

随机推荐

  • 当事务遇上分布式锁

    文章目录 1 分布式锁的几种实现方式 2 MySQL使用自带锁进行分布式同步控制 2 1 环境准备 2 2 可重复读下的for update的验证 3 Redis实现分布式锁进行同步控制 3 1 Redisson 3 2 Redisson实
  • Unity Input输入类 手指触摸检测

    在移动设备上 用户通常使用触摸屏来进行交互 Unity提供了Touch类来获取用户的触摸输入 以下代码是获取触摸的一些方法与参数 下面的代码演示了如何检测用户是否在屏幕上触摸了一个手指 在上面的代码中 我们使用了Input touchCou
  • visual studio——快速折叠所有代码和展开所有代码

    1 折叠所有代码 先ctrl m 再ctrl o 这是字母O 2 展开所有代码 先ctrl m 再ctrl l 这是字母L
  • ViewModel 源码设计思路分析

    前言 转眼一年又过去大半了 在2022年 初定了大多计划 搬家 换公司 很多事情都一托再拖 这里分享一篇我在公司内部做的分享文章吧 删除了部分对公司内部代码的探讨 公司中的项目运用到了大量的组件封装 有的是对第三方组件进行二次封装 有的是从
  • STM32 电机教程 6 - 步进电机转动控制

    前言 上一讲给大家介绍了步进电机的基础知识 相信大家对步进电机的基本工作原理有了一定的了解 如果没看上一节内容 可以先看一下 https blog csdn net zhanglifu3601881 article details 1028
  • 《微光与红外成像技术》

    1 绪论 图像就是用任何技术手段 将景物目标重现为二维画面或三维立体图的视觉信息 微光泛指在夜间或在低照度下微弱的光或能量低到不能引起视觉的光 2 人眼视觉的基本理论 人眼的绝对视觉阈值在 1 0 9 l
  • QML MouseArea堆叠时传递组合事件

    有2块MouseArea 上层MouseArea接受press事件而位于其下方的MouseArea接受click事件 click被称为组合事件 2方MouseArea各自接受自己的 互不影响 先上代码 MouseArea id beneat
  • 我的创作纪念日(另外关于所有网盘数据失效的问题请看这里)

    机缘 最初成为创作者的初心 从小就喜欢抄书写便签 经常被别人说傻 你记这些东西有什么用呢 从六岁开始就接触电脑了 奈何喜欢电脑却一直被现实生活打趴下 接触 Linux 接触的比较晚 一五年才知道原来这个世界上真的有只有字符代码界面的系统 那
  • jetson nano基础使用笔记

    1 jetson nano金属外壳安装 两个开关的接线方法如下 需要使用跳线帽连接左边第五和第六个管脚 如果不安装外壳的话 必须将跳线帽拆除才能给主板正常供电 2 jetson nano更换国内源 1 备份初始源 打开终端 ctrl shi
  • React性能优化指南

    React性能优化方法总结 使用React开发的项目 可以从加载性能和运行时性能两个方面进行优化 加载性能优化的目标是让用户更早地看到界面 更早地和应用交互 运行时性能优化目标是降低卡顿 交互更流畅 运行时 1 避免不必要的渲染 我们知道R
  • Kotlin资料

    Kotlin中文官网 https huanglizhuo gitbooks io kotlin in chinese content GettingStarted Basic Syntax html
  • 一个请求经历了什么(一)

    浏览器解析 检查是否合法 解析出相应的协议 域名 端口 路径等 如果没有端口则按协议添加默认端口 判断是否有本地缓存 DNS解析 解析流程 浏览器代理 gt 计算机host gt 局域网DNS服务器 gt 更上层DNS服务器 gt gt 顶
  • 回顾:HTTP/HTTPS/对称加密/非对称加密/session/cookie/token

    HTTP超文本传输协议 通过浏览器和服务器进行数据交互 进行超文本 文字 图片 视频等 传输的规定 规定了超文本传输要遵守的规则 特点 1 HTTP协议是无状态的 每次HTTP请求都是独立的 任何两个请求之间没有必然的联系 当然实际应用种并
  • Docker中安装Jenkins

    本篇主要讲如何在Docker中安装Jenkins 如果Docker未安装 可以先参考上一篇文章进行Docker安装 学习Docker 一 centos系统 Docker 安装与卸载 安装 拉取镜像 docker pull jenkins j
  • 关于Qt控制中边框的显示的一些设置(完善中)

    1 可以通过指定类型来选择一类控件进行设置 QLineEdit background color rgb 255 255 255 border radius 8px border color rgb 0 0 0 border style s
  • Linux中more命令的使用,Linux中more命令使用详解教程

    1 使用权限 所有者 什么是所有者权限 2 使用方式more 参数选项 文件 参数 num 从第num行开始显示 num 定义屏幕大小 为num行 pattern 从pattern 前两行开始显示 c 从顶部清屏然后显示 d 提示Press
  • 如何用 Python 开发一个简单的 blender 插件

    Blender是一款开源的3D建模和动画制作软件 支持Python脚本编写插件 下面是一个简单的Blender插件开发示例 首先 需要安装Blender软件 并确保安装了Python库 可以在Blender软件安装目录下的Python目录中
  • Windows安装Mysql(免安装版)

    Windows安装Mysql8 0 25教程 免安装版 1 下载mysql Mysql官网下载地址 2 配置初始化文件my ini 在根目录 与bin目录同级 下创建my txt文件 将以下内容复制到该文件中 其中mysql的安装目录和数据
  • 想将PPT的文字转换到Word文档?看这一篇就够了!!!

    将PPT的文字转换到Word文档 又到了期末考试复习周呢 一些老师会给我们复习的PPT 为了方便 我们当然会选择把它打印出来 但是看到这么多页的PPT 比如下面这张图就是我们老师给的PPT 我简直震惊 于是开始探索将PPT转化为Word的方
  • 【C++自我精讲】基础系列五 隐式转换和显示转换

    C 自我精讲 基础系列五 隐式转换和显示转换 前言 1 C 的类型转换分为两种 一种为隐式转换 另一种为显式转换 2 C 中应该尽量不要使用转换 尽量使用显式转换来代替隐式转换 1 隐式转换 定义 隐式转换是系统跟据程序的需要而自动转换的