文档章节

C++中的类型转换

首席吹牛官
 首席吹牛官
发布于 2015/05/22 12:50
字数 592
阅读 1
收藏 0

1.const_cast

   看见const,大家第一反映就是关键字,对这个类型装换和const关键字相关。这个类型转换用来舍弃变量的不可变特性。实际在过程中,其实我们不许要使用这个类型转换。但是可能在使用第三方库的时候不如你所愿,库对你是不可见的,所以你需要这个转换。

2.static_cast

  static_cast是我们使用的最多的类型转换。它显示地执行C++语言直接支持的转换,比如int转换为double。对于自定义的类类型,只要提供了关键的构造函数或者转换例程也可以进行显示的转换。

   static_cast可以用于指针和引用,但是不能用与对象本身。很遗憾,它不进行类型检测,第四中介绍的类型转换会进行类型检测。

3.reinterpret_cast

  reinterpret的中文释义为重新解释,你可想而知,这个转换是多么的强大,你可以重新解释一个东西。两个指针指向的对象可以没有继承层次,你可以装换,当然应用也会可以的,即使他们之间什么关系也没。这个关键字经常被用来将指针转换为void*其实这个过程static_cast也可以)以及逆过程。

   你使用它将指针转换成int和int装换指针。虽然在某些情况下可以,但是移植行很差,比如在64位平台,指针是64位,而int可能是32位。

4.dynamic_cast

   dynamic释义动态的。它为继承层次结构内的类型提供运行时检测,需要RTTI(real time type infomation)支持。它可以装换指针和引用,在运行时检测对象类型,如果转换没有意义,对于指针返回一个空指针,对于引用抛出一个

bad_cast异常。

    由于对象运行时类型信息存储在对象的虚表中,为了可以使用dynamic_cast,需要类拥有一个虚函数。没有虚表的话,尝试使用它,对得到一个编译错误。

      使用static_cast和reinterpret_cast都可以沿着继承层次向下转型。不过dynamic_cast进行运行时检测,可能性能有那么一丁点影响,不过很安全

本文转载自:http://blog.csdn.net/zhx6044/article/details/8952270

上一篇: perl学习(二)
下一篇: 最近的想法
首席吹牛官
粉丝 9
博文 368
码字总数 191938
作品 0
闵行
程序员
私信 提问
C++笔记(一)20110223

近日,公司准备用C++来做个类似openmeetings的软件。C++只是在学校时学习了,当当购了三本《Visal C++ 入门经典(第五版)》、《深入浅出MFC》、《Visaual C++ 音频你/视频处理技术及工程实践...

钟小华
2011/02/23
385
0
FFLIB之FFLUA——C++嵌入Lua&扩展Lua利器

摘要: 在使用C++做服务器开发中,经常会使用到脚本技术,Lua是最优秀的嵌入式脚本之一。Lua的轻量、小巧、概念之简单,都使他变得越来越受欢迎。本人也使用过python做嵌入式脚本,二者各有特...

知然
2013/01/27
0
0
C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast

C++强制类型转换:staticcast、dynamiccast、constcast、reinterpretcast 1. c强制转换与c++强制转换 c语言强制类型转换主要用于基础的数据类型间的转换,语法为: (type-id)expression//转换...

shzwork
03/12
8
0
【整理】为什么在C/C++中总是对malloc的返回值进行强制转换

============= 文章1 ================ 首先要说的是,使用 malloc 函数,请包含 stdlib.h(C++ 中可以是 cstdlib),而不是 malloc.h 。因为 malloc.h 从来没有在 C 或者 C++ 标准中出现过!...

摩云飞
2013/05/07
321
0
C++中的NULL和nullptr的区别

C的NULL 在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码: 实际上在C语言中,NULL通常被定义为如下: 也就是说NULL实际上是一个void 的指针,然后吧void 指针赋值给int 和foo...

dukeke
2018/01/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之访问者模式

定义 Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which......

陈年之后是青葱
昨天
10
0
PhotoShop 高级应用 : 分层云彩 - 简单闪电效果

1.创建黑白渐水平渐变图层 2.选择滤镜选项卡: 渲染--->分层云彩功能 3.将滤镜-云彩效果渲染后的图层进行反相操作 【此时出现闪电效果】 6.调整色阶,使得闪电效果更明显 7.创建剪贴蒙版:色...

东方墨天
昨天
11
0
三种实现Android主界面Tab的方式

三种实现Android主界面Tab的方式 https://www.cnblogs.com/caobotao/p/5103673.html

shzwork
昨天
11
0
java8-Optional类

背景 NPE问题,100%的Java程序员都碰到,并且曾经是心中的痛。 1965年英国TonyHoare引入了Null引用,后续的设计语言包括Java都保持了这种设计。 一个例子 业务模型 Person 有车一族, 有Car...

春天springcarter
昨天
11
0
py 登录github时token以及cookie的应用

import requestsfrom bs4 import BeautifulSoup## 获取tokenr1 = requests.get('https://github.com/login')s1 = BeautifulSoup(r1.text,'html.parser')token = s1.find(name='input',......

子枫Eric
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部