C++的向上转型

news/2025/2/8 6:00:56/

在 C/C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值;反过来,float 类型的数据在经过类型转换后也可以赋值给 int 类型的变量。

数据类型转换的前提是,编译器知道如何对数据进行取舍。例如:

    int a = 10.9;printf("%d\n", a);

输出结果为 10,编译器会将小数部分直接丢掉(不是四舍五入)。再如:

    float b = 10;printf("%f\n", b);

输出结果为 10.000000,编译器会自动添加小数部分。

类其实也是一种数据类型,也可以发生数据类型转换,不过这种转换只有在基类和派生类之间才有意义,并且只能将派生类赋值给基类,包括将派生类对象赋值给基类对象、将派生类指针赋值给基类指针、将派生类引用赋值给基类引用,这在 C++ 中称为向上转型(Upcasting)。相应地,将基类赋值给派生类称为向下转型(Downcasting)。

向上转型非常安全,可以由编译器自动完成;向下转型有风险,需要程序员手动干预。

向上转型和向下转型是面向


http://www.ppmy.cn/news/1093066.html

相关文章

Golang RSA 生成密钥、加密、解密、签名与验签

文章目录 1.RSA2.Golang 实现 RSA生成密钥加密解密签名验签 3.dablelv/cyan参考文献 1.RSA RSA 是最常用的非对称加密算法,由 Ron Rivest、Adi Shamir、Leonard Adleman 于1977 年在麻省理工学院工作时提出,RSA 是三者姓氏首字母的拼接。 它的基本原理…

第二证券:为什么a股放开做空机制?

对于很多一般出资者来说,做空股票是一件十分复杂和困难的工作,可是对于专业的出资者和组织来说,这供给了一个愈加自由的商场买卖环境。那么,为什么A股放开做空机制呢?我们从多个视点来分析: 视点一&#x…

java八股文面试[数据库]——索引哪些情况下会失效

查询条件包含 or,会导致索引失效。 隐式类型转换,会导致索引失效,例如 id字段类型是varchar,我们 where id 1,这样就会触发隐式类型转换 like 通配符会导致索引失效,注意:”ABC%” 不会失效,…

Springboot整合shiro

导入依赖 <!-- 引入springboot的web项目的依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> ​ <!-- shiro --><depende…

【自学开发之旅】Flask-回顾--对象拆分-蓝图(二)

url-统一资源定位符-不同的url对应不同的资源 作为服务端&#xff0c;url和视图函数的映射关系就是路由。 定义传递参数的方式&#xff1a; 1.创建动态url app.route("/login2/<username>/<passwd>") def login2(username, passwd):if username "…

MVVM架构下wpf的密码框绑定

背景&#xff1a;TextBox可以很轻松地对Text使用Binding&#xff0c;绑定ViewModel类里面的属性 即&#xff1a;<Text"{Binding LoginId}"/> 但是使用PasswordBox的密码框就不行了&#xff0c;因为没有Text这个属性 那么就要自己实现一个PasswordBox的帮助类了…

centos7 安全加固

PS&#xff1a;之前在进行安全测试的时候&#xff0c;说是报告环境有漏洞&#xff0c;于是根据报告的漏洞来查找相应的解决方案&#xff0c;当然&#xff0c;现在centos已经停止维护了&#xff0c;但是估计还是有不少使用的人&#xff0c;把他拿出来给大家一起分享一下解决方案…

Redis 非关系型数据库 配置与优化

关系数据库与非关系型数据库 关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。 SQL 语句&#xff08;标准数据查询语言&#xff09;就是一种基于关系型数据库的语言&#x…