C++中的显示转换总结
来源:互联网 发布:windows白屏 编辑:程序博客网 时间:2024/05/18 18:19
内容参考的是C++编程思想和C++Primer,如果转载请注明出处。
标准的C++提供了四种转换,static_cast,const_cast,reinterpret_cast,dynamic_cast。虽然有时候确实需要强制转换,但是它们的本质上是很危险的。
<1>static_cast
编译器隐式执行的任何类型的转换都可以由static_cast来完成。它主要用在典型的非强制转换(比如int->double),窄化(double->int可能丢失数据),使用void *的强制转换(C++不转换是不能赋值的),隐式类型变换和类层次的静态定位。
<2>const_cast
如果从const转换成非const或从volatile转换为非volatile可以使用const_cast。这个是它的唯一的作用。
<3>reinterpret_cast
reinterpret_cast通常为操作数的位模式提供较低层次的重新解释。reinterpret_cast本质上依赖机器,为了安全的使用reinterpret_cast,要求程序员完全理解所涉及的数据类型,以及编译器实现强制类型转换的细节。
<4>dynamic_cast
安全类型向下进行转换,当使用dynamic_cast试图向下类型转换一种特定的类型,仅当类型转换是正确的并且是成功的时候,返回值会是一个指向所需类型的指针,否则返回0.dynamic_cast运行时需要一点额外的开销,当执行大量的dynamic_cast的时候就会影响到性能了。有的时候进行向下类型转换的时候如果我们知道正在处理的是何种类型就可以用static_cast代替dynamic_cast而不必运行时检查。
- C++中的显示转换总结
- c++中的显示转换
- c++中的显示转换
- C、C++中的隐式转换和显示转换
- 显示转换中的注意事项
- C++中的显示转换
- C++中的显示转换
- C++【显示类型转换】
- c/c++ 数据类型转换总结
- c/c++ 数据类型转换总结
- C/C++类型转换总结
- C/C++类型转换总结
- c/c++类型转换总结
- C/C++类型转换总结
- C强制类型转换总结
- C#.NET 中的类型转换
- C#.NET 中的类型转换
- C#.NET 中的类型转换
- 小写字母转换成大写字母
- 必须得说一下,子类关于从父类继承过来的private成员这点事儿
- 算法之分治法小结
- CF209 Div2 (D) 找最长的连续子序列拥有相同的最大公约数,并且最大公约数是这个序列中的一个数-------左右延伸的方法
- 淘宝网店装修常用代码大全
- C++中的显示转换总结
- 理工大学ACM平台题答案关于C语言 1145 面向对象程序设计上机练习六(类和对象)
- php连接数据库
- LeetCode Multiply Strings
- MySQL:UNION -- 多张表查询出的结果集合并
- Maven搭建多模块企业级项目
- How to generate Oracle Net tracing for a DBMS_JOB using a database link
- ios重要的官方文档地址
- 新手入门--输入格式二