前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++的类型转换

C++的类型转换

作者头像
Qt君
发布2019-07-16 14:08:15
7770
发布2019-07-16 14:08:15
举报
文章被收录于专栏:跟Qt君学编程

在C语言中转换类型的方法一般是使用强制转换,就如下列的转换方法

代码语言:javascript
复制
int i = ;
void *v = (void *)i;

在C++中类型的转换大致有四种:

1. dynamic_cast类型转换

(1) dynamic_cast是在运行时检查的,属于动态转换;

(2) 一般用于基类和派生类之间的相互转换。

代码语言:javascript
复制
QThread *thread = new QThread;
QObject *obj = dynamic_cast<QObject *>(thread);

2. static_cast类型转换

(1) static_cast会在编译的过程中进行安全性检查, 相对与dynamic_cast是静态转换;

(2) 一般用于内置数据类型的转换和通常的类之间的转换。

代码语言:javascript
复制
int i = ;
double d = static_cast<double>(i);

3. const_cast类型转换

主要是用于去掉指针和引用的const和volatile类型。

代码语言:javascript
复制
const int *p = ;
int *q = NULL;
q = const_cast<int *>(p);

4. reinterpret_cast类型转换

(1) reinterpret_cast是为了映射到一个完全不同类型的意思,这个关键词在我们需要把类型映射回原有类型时用到它。我们映射到的类型仅仅是为了故弄玄虚和其他目的,这是所有映射中最危险的。(这句话是C++编程思想中的原话)

(2) 用于完全没有关系指针或引用之间的转换,比如浮点型指针转整型指针;

(3) 相当于强制转换,不会考虑安全检查问题,这是需要值得注意的,不像dynamic_cast与static_cast进行安全检查。

代码语言:javascript
复制
int i = ;
double d = reinterpret_cast<double&>(i);
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档