问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++类型转换是什么?

发布网友 发布时间:2022-04-23 11:28

我来回答

4个回答

热心网友 时间:2023-10-12 08:16

1、static_cast:可以实现C++中内置基本数据类型之间的相互转换,enum、struct、 int、char、float等。它不能进行无关类型(如非基类和子类)指针之间的转换。

2、const_cast:const_cast操作不能在不同的种类间转换。相反,它仅仅把一个它作用的表达式转换成常量。它可以使一个本来不是const类型的数据转换成const类型的,或者把const属性去掉。

3、reinterpret_cast:(interpret是解释的意思,reinterpret即为重新解释,此标识符的意思即为数据的二进制形式重新解释,但是不改变其值。)有着和C风格的强制转换同样的能力。它可以转化任何内置的数据类型为其他任何的数据类型,也可以转化任何指针类型为其他的类型。它甚至可以转化内置的数据类型为指针,无须考虑类型安全或者常量的情形。不到万不得已绝对不用。

4、dynamic_cast:

(1)其他三种都是编译时完成的,dynamic_cast是运行时处理的,运行时要进行类型检查。

(2)不能用于内置的基本数据类型的强制转换。

(3)dynamic_cast转换如果成功的话返回的是指向类的指针或引用,转换失败的话则会返回NULL。

(4)使用dynamic_cast进行转换的,基类中一定要有虚函数,否则编译不通过。需要检测有虚函数的原因:类中存在虚函数,就说明它有想要让基类指针或引用指向派生类对象的情况,此时转换才有意义。 这是由于运行时类型检查需要运行时类型信息,而这个信息存储在类的虚函数表(关于虚函数表的概念,详细可见<Inside c++ object model>)中,只有定义了虚函数的类才有虚函数表。

(5)在类的转换时,在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的。在进行下行转换 时,dynamic_cast具有类型检查的功能,比 static_cast更安全。向上转换即为指向子类对象的向下转换,即将父类指针转化子类指针。向下转换的成功与否还与将要转换的类型有关,即要转换的指针指向的对象的实际类型与转换以后的对象类型一定要相同,否则转换失败。

c++类型转换的原因:

c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非 const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间的差别是巨大的,但是传统的c语言风格的类型转换没有区 分这些。

还有一个缺点就是,c风格的转换不容易查找,他由一个括号加上一个标识符组成,而这样的东西在c++程序里一大堆。所以c++为了克服这些缺点,引进了4种类型转换操作符。

热心网友 时间:2023-10-12 08:16

当参与运算的数据的类型不相同时,必须要先将它们转换成同一类型,然后再进行运算。C语言中的类型转换有的可以由系统自动完成,称为自动类型转换,有的则需要程序员编写代码进行转换,称为强制类型转换。

热心网友 时间:2023-10-12 08:17

reinterpreter_cast    重新解释类型转换。    

dynamic_cast    子类和父类之间的多态类型转换。    

const_cast    去掉const属性转换 。

热心网友 时间:2023-10-12 08:17

就是将变量的类型进行相对应的转化啊,比如整数类型与浮点数类型的互换,字符串类型跟整数类型的互换
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
康复者的血清中含有什么免疫分子 血清里面有什么 走读的定义在哪些教育阶段适用? PostgreSQL修改数据库表的列属性操作 Ubuntu调整postgresql默认路径 ubuntu – Postgresql:更改默认数据路径 刘邦几个老婆刘邦老婆吕雉和戚夫人的不同结局 刘邦几个老婆?. 如何防止父母在微信群里抢红包? 有哪些适合夏天选择的长裙款式值得推荐? 什么是自动类型转换 简述C#中类型转换的方式 类型转换名词解释 C语言中数据类型转换的方式有几种? 紫红色怎么调染膏 紫色是用什么染膏调成的?步骤呢? 我想染粉紫色的头发该怎么调染膏 紫灰色头发怎么染?? 粉紫色染发膏怎么配? 染发中的紫色怎么调出来? 染发初学者怎么调配染膏的比例 染发调膏怎么调啊? 葡萄紫色的染膏比例? 黑色头发如何染紫红如何调配染膏 头发淡紫色染膏怎么调 紫色由哪两种颜色染膏可以配出来 染膏调颜色怎么调配? 美发做紫色怎么调配染膏?要不要褪色,如果要褪色的话褪色到几度色?双氧用几度的? 紫红色怎么调配染膏 紫色染膏怎么调 什么是复合增长率,怎么计算? C语言中的类型转换 java中的类型转换是什么 C语言强制类型转换 在什么情况下会发生自动类型转换? C语言中类型强制转换什么意思?通俗点怎么解释,不要定义 华为nova5z和华为nova5i手机壳可以通用吗? 数据库中怎样进行类型转换 C语言数据类型如何转换? C语言 类型转换 Java中的强制类型转换是如何转换的? 什么是隐式类型转换?什么是显示类型转换 蒸汽挂烫机熨烫各种不同面料衣物温度是多少? 蒸汽挂烫机的温度多少比较合适?哪个牌子的产品符合这个温度? p飞利浦挂烫机蒸汽熨斗温度多少 挂烫机温控开关ksd301温度选择多少度? 飞利浦蒸汽挂烫机锅炉底部温控器是多少度?挂烫机型号GC511 飞利浦蒸汽挂烫机gc525温控是多少度 蒸汽挂烫机 能调温度吗 挂烫机里面的温控器是控制多少度的? 蒸汽挂烫机会不会烫坏衣服?怎样不会烫坏衣服?