码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 四种类型转换

时间:2020-01-02 11:55:35      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:变量   四种   不同   去掉   比较   替换   内存   表达   inter   

1. static_cast

只支持相关类型的转换,比较安全,比如short与int,double与int,void* 与 int*, float*等

特点:编译期间转换

 

2. const_case

去掉表达式的 const 修饰或 volatile 修饰,将 const/volatile 类型转换为非 const/volatile 类型,比如:

const int n = 100;
int *p = const_cast<int*>(&n);
*p = 234;

原来int n所在内存是一个不可修改值的整型,现在可以了

假如输出n,其值还是100,因为const类似#define,在常量期就进行了替换!

 

3. reinterpret_cast

是 static_cast 的一种补充,实现不同类型的转换,风险较高,

比如int与指针的转换,两个类型指针A*与B*的转换……使用不小心会导致访问越界!

 

4. dynamic_cast

只用来类继承的时候指针之间的转换,而且最好是向上继承upcasting,比如:

Derived *pD = new Derived(6);
Base *pB = dynamic_cast<Base*> (pD);

 

总结:

static_cast最常用而且比较安全,reinterpret_cast强制转换不安全,谨慎使用,

const_cast只用来处理const类型变量,dynamic_cast只用来处理类的继承。

C++ 四种类型转换

标签:变量   四种   不同   去掉   比较   替换   内存   表达   inter   

原文地址:https://www.cnblogs.com/Younger-Zhang/p/12132138.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!