C++类型转换

87 篇文章 1 订阅
订阅专栏

C++类型转换

 

 

C++为了规范C中的类型转换,加强类型转换的可视性,引入了四种强制类型转换操作符:static_cast, reinterpret_cast, const_cast, dynamic_cast 

他们本质上都是模板类。

下面分别来介绍:

1.static_cast

它用于非多态类型的转换(静态转换),对应于C中的隐式类型转换但他不能用于两个不相关类型的转换,如整形和整形指针之间的转换,虽然二者都是四个字节,但他们一个表示数据,一个表示地址,类型不相关,无法进行转换。

该转换在编译时完成,和C风格的类型转换相似,不过要注意下面几点

不能在没有派生关系的两个类类型之间转换

不能去除掉原有类型的类型修饰符,例如const,volatile,__unaligned

转换对象时由于没有动态类型检查,所以由基类对象转换成派生类对象的时候存在安全隐患

 

void Test()

{

    //C中的方式

    int i = 10;

    double d1 = i;//隐式类型转换

    //int *p = i;//无法隐式类型转换,只能强制类型转换

    int *p = (int*)i;

    //C++中的方式

    double d2 = static_cast<double>(i);

    //相当于创建一个static_cast<double>类型的匿名对象赋值给d2

    int* p2 = static_cast<int*>(i);//无法转换,会报错

}

2.reinterpret_cast

einterpret的含义是重新解释,可将一种类型转换成另一种不相关类型,对应C中的强制类型转换,处理无法进行隐式转换的情况

void Test()

{

    int i = 10;

    int* p2 = reinterpret_cast<int*>(i);

}

强制类型转换有时可以很暴力的处理一些问题 

如下例: 

对于一个带参数的函数,如何不传参也可以调用该函数?

void Fun(int s)

{

    cout << s << endl;

}

typedef void(*FUNC)();

void Test()

{

    FUNC pf = reinterpret_cast<FUNC>(Fun);

    pf();

}

C中的强制类型转换也可以处理。 

虽然我们通过这种BUG的方式转换函数指针,但是这样的代码是不可移植的,而且有时会产生不确定的结果,所以不建议这样来用 

如此处输出的s的值就为一个随机值,虽然用户在外部未传参,但是该函数在调用时会创建形参,该形参未初始化,自然是随机值 

 

3.const_cast

他的功能就是删除变量的const属性,方便再次赋值

该转换在编译时完成,用于解除const,volatile修饰符,只能转换指针或者引用

void Test3()

{

    const int i = 10;

    int *p = const_cast<int*>(&i);

    *p = 20;

    cout << i << endl;

    cout << *p << endl;

}

此时这两个值会分别输出多少呢 



作者:saygoodbye_e92e
链接:https://www.jianshu.com/p/e6a1ed13f14f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

C++类型转换归纳总结
09-04
主要介绍了C++类型转换归纳总结,通过本文可以加深读者对于C++变量类型及其相互转换方法的理解,需要的朋友可以参考下
C++类型转换运算符介绍
疯狂挖掘机的博客
03-30 2093
C++中的新式类型转换介绍
C++ 类型转换
shuzfan的专栏
08-17 1万+
隐式类型转换 1 数值类型转换 2 指针类型转换 显式类型转换 1 explicit关键字 1 强制类型转换 11 static_cast 12 dynamic_cast 13 const_cast 14 reinterpret_cast 参考资料 C++类型转换大体上包括隐式类型转换和显式类型转换。1. 隐式类型转换隐式类型转换是自动执行的,无需显式的操作符。 隐式类型转换发生在很多地方,比如函数
C/C++ 类型转换
cpp_learner的博客
06-14 2630
C语言的强制类型转换C++的四种转换类型的方式。
c++类型转换
热门推荐
一条二哈
05-29 2万+
类型转换有 c 风格的,当然还有 c++风格的。c 风格的转换的格式很简单(TYPE) EXPRESSION,但是 c 风格的类型转换有不少的缺点,有的时候用 c 风格的转换是不合 适的,因为它可以在任意类型之间转换,比如你可以把一个指向 const 对象的指针转换 成指向非 const 对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的 指针,这两种转换之间的差别...
C++类型转换规则
kangjielearning的博客
08-10 1145
自动转换规则: 1、若参与运算量的类型不同,则先转换成同一类型,然后进行运算。 2、转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。 a、若两种类型的字节数不同,转换成字节数高的类型 b、若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型 3、所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。 4、char型和short型参与运算时,必须先转换
C++类型转换
rayn的专栏
01-03 2796
c++类型转换
掌握C++类型转换:static_cast、const_cast、dynamic_cast 和 reinterpret_cast
最新发布
Lion_Long的博客
04-20 4394
静态类型转换静态类型转换是最常用的类型转换方式,它可以将一种类型的数据强制转换为另一种类型,但需要注意的是,这种转换可能会损失一些信息,因此在进行此类转换时应当谨慎。int a = 10;动态类型转换动态类型转换主要用于多态类型之间的转换,它可以将基类指针或引用转换为派生类指针或引用。如果进行非法的类型转换,动态类型转换会返回一个空指针。重新解释类型转换
类型转换C++
Man9o
03-09 2443
或者编译器会对常量进行优化,直接用它的值替换所有的引用,那么你修改的只是一个临时变量,而不是原来的常量。在main函数中,创建了一个B类的对象b,并将其地址分别赋给了指向A1和A2类型的指针ptr1和ptr2。reinterpret_cast可以将任何指针类型转换为任何其他指针类型,但是这种转换是不安全的,因为它不检查转换前后的指针是否兼容。这些输出的地址表明,指向A1类型的指针ptr1和指向A2类型的指针ptr2分别指向了B类对象b中不同的内存地址。每个包含虚函数的类或者虚继承的子类,都有一个虚函数表。
C++类型转换
u012944685的专栏
03-31 2892
导读 提到类型转换,相信有过编程经验的小伙伴们都不陌生了。之前笔者在《NDK编程Java如何保存C或C++对象》 一文就中使用了类型强转的方式。 既然C++是继承于C的语言,那么它在类型转换上又做了哪些扩展呢? C语言式转换 C语言式的类型转换很简单,通过一个括号即可完成强转:(Type)var;。虽然C语言式转换简单,但是它是有不少缺点的,比如它可以在任意类型之间进行转换,比如将const类型的对象转换成非const类型的对象, 可以将一个基类的对象指针转化成一个派生类的对象指针等。这些强制转换对于C++
C++ 类型转换运算符
12-22
* 实现int类型转换为SamllInt类型 */ SmallInt(const int val): value(val) { cout << "SmallInt(const int val)" << endl; } /** * class-type conversion * 无显式返回类型 * 无形参 * ...
C++类型转换的深入总结
01-19
C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如int转换成char。 dynamic_cast,命名上理解是动态类型转换。...
C++class_convert.rar_c++类型转换_类型转换
09-20
C++ 类型转换 C++ 类型转换 C++ 类型转换
细说C++类型转换操作符
12-22
C++语言虽然兼容C,也支持C语言的类型转换用法,是将类型用圆括号括起来,这种转换可视性比较差,难以跟踪错误的转换。C++提供了命名的强制转换操作符,毕竟转换有时是不安全的,所以使用命名转换操作符可以根据所...
C++类型转换运算符的实例详解
01-20
C++类型转换运算符的实例详解 C++中有4个类型转换运算符,使装换过程更规范 dynamic_cast; const_cast; static_cast; reinterpret_cast; 一、dynamic_cast 该运算符我在之前的文章中已经介绍过了 //...
vc.zip_c++类型转换_数据类型转换
09-14
vc数据类型转换大全,包括各种类型行之间的转换!非常方便!
C++类型转换详细介绍
01-21
C++类型转换详细介绍 1、类型转换名称和语法  C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:  TYPE b = (TYPE)a   C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。  ...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 4G LTE 频率表 54447
  • 555定时器介绍 48048
  • C#中int与string相互转换 30897
  • 常见视频接口 21210
  • EMC中class A和class B哪个更严格? 18498

分类专栏

  • Math 17篇
  • opencv 13篇
  • C/C++ 87篇
  • CUDA 1篇
  • Python 7篇
  • MATLAB 2篇
  • 电子产品认识与测试 208篇
  • 电源 28篇
  • 电子元器件 24篇
  • LTE 1篇
  • 5G_NR 2篇
  • OTA 12篇
  • SAR 7篇
  • EMC 99篇
  • 认证 1篇
  • 安规 3篇
  • C# 31篇
  • Windows服务 3篇
  • Web 15篇
  • nginx 1篇
  • Apache Httpd 14篇
  • JavaScript 17篇
  • CSS3 3篇
  • HTML5 8篇
  • PHP 21篇
  • Windows运维 22篇
  • Batch脚本(BAT文件)/批处理 11篇
  • Win32 9篇
  • EasyX 4篇
  • 软考 4篇
  • DB 1篇
  • MySQL 35篇
  • SQLite 6篇

最新评论

  • 外置USB供电与内置锂电池供电自动切换电路

    qq_73568283: 老师你好,请问vbus下降时间大概为多少较为合适,有一个大概的取值参考方向吗表情包表情包

  • 电路分析:运放和三极管组成的恒流源电路

    whn11: 恒流源电路2

  • 电容充电时间的计算方法及公式

    营梦者: t=RC=(10×10^3Ω)×(100×10^−6F)=1ms ????

  • 用示波器揭示以太网传输机制

    桃花树下种桃树: 请问这是哪款示波器啊?

  • 一张图讲解清楚什么事EMC、EMI、EMS

    CSDNTSD: 详细且形象

大家在看

  • ①单细胞学习-数据读取、降维和分群 1145
  • 【python】可变对象vs不可变对象 254
  • 从零开始实现自己的串口调试助手(4) -实现自动发送 / 时间显示 1
  • C++学习(15)
  • 【一竞技CS2】YaLLa 2024邀请TheMongolz和BB 505

最新文章

  • Spatial Peak SAR Evaluation
  • 单双通六角铜柱规格尺寸大全
  • 继电器的故障处理
2024
04月 2篇
02月 36篇
01月 13篇
2023年93篇
2022年229篇
2021年18篇
2020年75篇
2019年14篇
2017年2篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司呼和浩特建网站哪家好宁德网站优化按天扣费推荐喀什如何制作网站多少钱呼和浩特建站报价洛阳关键词排名包年推广长春网站seo优化推荐永新设计网站达州网站推广公司三亚高端网站设计报价台州百姓网标王推广公司太原seo网站推广报价兴安盟网站制作洛阳SEO按天计费哪家好黔南百度网站优化排名哪家好驻马店网络营销价格南充建网站阿里网站优化按天收费塔城建站多少钱防城港设计公司网站推荐四平网站关键词优化价格泰州百度竞价价格大丰seo推荐张家界SEO按效果付费公司哈密网站关键词优化价格中山seo公司海南至尊标王多少钱德阳阿里店铺托管延边如何制作网站多少钱贺州百度标王哪家好汉中网站改版价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化