我知道你可以把一个像int这样的类型转换为float但是什么是转换指针?
例如,我一直在查看Direct X API的一些代码
reinterpret_cast<void**>(&mDirect3DDevice)
我不明白这里发生了什么。我认为铸造是在你基本上将一种类型修改为另一种类型时。
答案 0 :(得分:4)
Casting确实将一种类型转换为另一种类型,或者更确切地说,将一种类型的值转换为另一种类型的值。
在您的情况下,您正在将指向mDirect3DDevice
的指针转换为指向void *
的指针。
但是,通常情况下,重新解释指针并不是很有用,因为您没有任何保证结果是有用的。唯一明智的重新诠释是:
void *
,它们是往返值保留(也就是说,任何对象指针都可以转换为指向void
并返回的指针,然后返回原始值),但这些应该用static_cast
s; char *
,这对于访问基于字节表示的对象非常有用(例如,用于序列化); 重新解释指针并取消引用结果允许您假装一种类型的值实际上是另一种类型的值 - 而这只在非常狭窄的情况下才有意义。
答案 1 :(得分:0)
我相信任何变量都可以作为指针转换,因为指针指向该变量的内存中的位置。因此,在这种情况下,&
之前的mDirect3DDevice
会返回变量mDirect3DDevice
的内存位置,而不是mDirect3DDevice
的内容。
我希望这有帮助!