+ -
当前位置:首页 → 问答吧 → reinterpret_cast有什么作用?

reinterpret_cast有什么作用?

时间:2011-12-06

来源:互联网

恩,好吧,以前没用过,也没见过

作者: xubiao753   发布时间: 2011-12-06

强制类型转换,如果LZ不熟悉,不建议使用。

作者: xuddk727   发布时间: 2011-12-06

请问下这个和直接转换的有什么区别吗?
比如 unsiged long a = xxxxx;
 CView *p_View= (CView*) a;
和用这个转换有什么区别吗?

作者: xubiao753   发布时间: 2011-12-06

reinterpret_cast<>是可以用来进行强制转换,它的意思大概如下:
如指针:char *p = ...;
那么指针p被解释为char类型,如果你要把char *转换为int *;
由于char *和int *类型不一样,可以进行强制转换,强制把指针char *解释为int *,那么就可以用:
reinterpret_cast<>;这种是比较推荐的用法。

作者: yuucyf   发布时间: 2011-12-06

reinterpret_cast 是可以被解释为其他类型的,
比如double 到 int ,它负责将int(4位的) 这个地址重新读成8位类型的值,当然这样得出的结果会和int不同

作者: xuddk727   发布时间: 2011-12-06

强制类型转换,特别用于函数类型的转换、不同类型的转换,而楼主的例子只是强制定义,不是强制转换

作者: hai296   发布时间: 2011-12-06

绕开编译器的类型检查和自动转换,强制把A当作B来使用

作者: redui   发布时间: 2011-12-06

http://topic.csdn.net/t/20050114/23/3727249.html
看看这个解释。。。

作者: shen_wei   发布时间: 2011-12-06

C++的类型转换,类似于以前C的强制类型转换。

作者: oyljerry   发布时间: 2011-12-06

http://www.doserver.net/read.php?520

作者: VisualEleven   发布时间: 2011-12-06

C/C++ code
int i;
i=(int)(&i);


上面这个例子用于取变量i的地址(得到一个int*类型的指针),转化成整形赋值给i。
这里的难点是这个类型转换,C++中的几个类型转换中,只有 reinterpret_cast 能做到这一点,可以完全无视对象的类型,把原有的内存位置换一种解释方式。

C语言只是笼统地给出了一个强制转换,而C++把它们细化了。

作者: fight_in_dl   发布时间: 2011-12-06