深入理解C++强制类型转换
来源:互联网 发布:网络剧特点是什么 编辑:程序博客网 时间:2024/06/05 07:20
C++四种强制转换类型
static_cast
reinterpret_cast
const_cast
dynamic_cast
static_cast
静态转换,用于非多态类型,任何标准的转换都可以用它,不能用于两个互不相干的类型
可以理解为能进行隐式转换类型的使用它
代码示例:
int i=1;double d=static_cast<double>(i);//正确int* p=&i;p=static_cast<int> (i);//int和int*不相关
不相关类型之间的转换
代码示例:
int i=1;int* p=&i;p=reinterpret_cast<int>(i);
const_cast
去常性的强制类型转换,将const变为非const类型
代码示例:
const int a=2;int* p=const_cast<int*>(&a);*p=a;
dynamic_cast *****最重要的一个
动态转换,用于将一个父类对象的指针或引用)转化为子类对象的指针或引用
分类:
上转型:子类对象指针传给父类指针或引用
下转型:父类对象指针传给子类指针或引用
使用场景:
(1)只能用于含有虚函数的类
(2)先检查能否转化,能转化进行转化,不能转化返回0
(3)一般来说,父类不能转化成功,子类可以转化成功,从对象模型的角度我们可以看出,由于父类缺少子类特有的部分,所以指过去的时候会产生越界访问。
代码示例:
class B{ virtual void fun() {}}class D:public B{}B* pa=NULL;D* pd=dynamic_cast<B*>(pa);
0 0
- JavaScript深入理解之强制类型转换
- 深入理解C++强制类型转换
- c++-----强制类型转换
- 【C++】强制类型转换
- C 强制类型转换
- C 强制类型转换
- C 强制类型转换
- 深入理解C语言类型转换
- 类型强制转换的理解
- C/C++强制类型转换。。。
- c/c++强制类型转换
- C语言类型强制转换
- c/c++强制类型转换
- C语言强制类型转换
- C中的类型强制转换
- c/c++强制类型转换
- C语言类型强制转换
- C/C++类型强制转换
- css3字体缩放样式-webkit-text-size-adjust的用法详解
- TCP/IP四层模型
- 信息安全工程师 学习笔记(十)
- Python 类中Name mangling和下划线命名
- [codewars]6.给定的一个的阵列和零的等效二进制值转换为整数。
- 深入理解C++强制类型转换
- 0到100的猜数字游戏
- Ubuntu16.04向内核增加一个系统调用实验
- 信息安全工程师 学习笔记(十一)
- 我的五面经历--腾讯 百度 支付宝 阿里巴巴
- 编写高质量代码:改善Java程序的建议
- 操作系统内存详解
- improve your python code(10)
- 最小(代价)生成树