C++那些事:C++引入的 4 种类型转换,应该怎样使用?

C++那些事:C++引入的 4 种类型转换,应该怎样使用?众所周知C++关于类型转换引入了四种方式:(1)static_cast(2)const_cast(3)dynamic_cast(4)reinte

大家好,欢迎来到IT知识分享网。

C++那些事:C++引入的 4 种类型转换,应该怎样使用?

众所周知C++关于类型转换引入了四种方式:

(1)static_cast

(2)const_cast

(3)dynamic_cast

(4)reinterpret_cast

C++那些事:C++引入的 4 种类型转换,应该怎样使用?

1、为什么要引入这几种类型转换?

我们都知道C++完全兼容C语言,C语言的转换方式很简单,可以在任意类型之间转换,但这也恰恰是缺点,因为极其不安全,可能不经意间将指向const对象的指针转换成非const对象的指针,可能将基类对象指针转成了派生类对象的指针,这种转换很容易出bug,需要严格审查代码才能消除这种隐患,但是C这种转换方式不利于我们审查代码,且程序运行时也可能会出bug。

而C++引入的这几种类型转换可以完美地解决上述问题,不同场景下不同需求使用不同的类型转换方式,同时有利于代码审查。

C++那些事:C++引入的 4 种类型转换,应该怎样使用?

2、这四种类型转换分别应用在什么场景?

static_cast

使用方式:

C++那些事:C++引入的 4 种类型转换,应该怎样使用?

使用场景:基本数据类型之间的转换使用,例如float转int,int转char等,在有类型指针和void*之间转换使用,子类对象指针转换成父类对象指针也可以使用static_cast。

非多态类型转换一般都使用static_cast,而且最好把所有的隐式类型转换都是用static_cast进行显示替换,不能使用static_cast在有类型指针之间进行类型转换。

dynamic_cast

使用方式:

C++那些事:C++引入的 4 种类型转换,应该怎样使用?

使用场景:用于将父类的指针或引用转换为子类的指针或引用,此场景下父类必须要有虚函数,因为dynamic_cast是运行时检查,检查需要运行时信息RTTI,而RTTI存储在虚函数表中,关于虚函数表具体可以看我的这篇文章:面试系列之C++的对象布局

const_cast

使用方式:

C++那些事:C++引入的 4 种类型转换,应该怎样使用?

使用场景:用于常量指针或引用与非常量指针或引用之间的转换,只有const_cast才可以对常量进行操作,一般都是用它来去除常量性,去除常量性是危险操作,还是要谨慎操作。

reinterpret_cast

使用方式:

C++那些事:C++引入的 4 种类型转换,应该怎样使用?

使用场景:没啥场景,类似C语言中的强制类型转换,什么都可以转,万不得已不要使用,一般前三种转换方式不能解决问题了使用这种强制类型转换方式。

PS:另外对于学习编程或者正在工作的朋友,如果你想更好地提升你的编程能力乃至转行,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~

编程学习书籍分享:

C++那些事:C++引入的 4 种类型转换,应该怎样使用?

编程学习视频分享:

C++那些事:C++引入的 4 种类型转换,应该怎样使用?

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

点击下方【了解更多】获取学习资料~

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/59381.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信