C++ static_cast
2016-12-22 15:46
176 查看
static_cast
编辑该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。
中文名暂无外文名static_cast分 类强制类型转换类 型C++ static_cast
目录
1用法2简介
用法
编辑static_cast < type-id > ( expression )
简介
编辑该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:
①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。
进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;
进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。
②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。
③把空指针转换成目标类型的空指针。
④把任何类型的表达式转换成void类型。
注意:static_cast不能转换掉expression的const、volatile、或者__unaligned属性。
C++中static_cast和reinterpret_cast的区别
C++primer第四版第五章里写了编译器隐式执行任何类型转换都可由static_cast显示完成;reinterpret_cast通常为操作数的位模式提供较低层的重新解释
1、C++中的static_cast执行非多态的转换,用于代替C中通常的转换操作。因此,被做为显式类型转换使用。比如:
2、C++中的reinterpret_cast主要是将数据从一种类型的转换为另一种类型。所谓“通常为操作数的位模式提供较低层的重新解释”也就是说将数据以二进制存在形式的重新解释。比如:
为整型;一个明显的现象是在转换前后没有数位损失。
相关文章推荐
- C语言 · 查找整数
- 指向函数的指针
- 8.C++ (结构体、共同体、枚举类型)
- 7.C++ 数组、字符串与结束标志
- 《专题:C++语法基础》篇一:准备
- c++SQLite
- Poedu_C++_Lesson02_2_20161220_重载、默认实参、inline、类型转换、引用
- C语言实现有限状态机FSM
- 使用VC++获得从摄像头的图像(转)
- C++11新特性,利用auto和std::chrono获取系统时间的方法
- C语言多线程
- TQ2440开发板学习纪实(4)--- 初始化片外RAM,让程序有更大内存空间
- leetcode 451 Sort Characters By Frequency C++
- VS2010 调试C++项目 fatal error LNK1123 错误解决办法
- 《C++ Primer Plus(第六版)》(21)(第十一章 使用类 编程题答案2)
- 6.C++ 宏定义、文件包含、条件编译、内部函数和外部函数
- C语言指针
- hessiancpp编译和使用(C++版)
- QML与Qt C++ 交互机制探讨与总结
- 抽象性设计——用C语言实现B树的基本操作