在C ++中:
static_cast<unsigned int>(reinterpret_cast<unsigned int>(&this[-0x00003111]))
我不理解&this[-0x00003111]
我无法理解&#34; [ - 地址]&#34;
如何将其转换为delphi代码?
答案 0 :(得分:1)
这是一段奇怪的代码。要理解这一点,必须考虑operator precedences。
然而,重要的缺失部分是class
引用的this
。我认为这是在class A
的方法中发生的。以下代码与
static_cast<unsigned int>(reinterpret_cast<unsigned int>(&this[-0x00003111]))
但使用分隔的表达式:
A *pThis = this;
A &a = pThis[-0x00003111]; // aka. A &a = *(pThis - 0x00003111);
A *pA = &a;
unsigned int ui = reinterpret_cast<unsigned int>(pA);
unsigned int ui2 = static_cast<unsigned int>(ui);
(为了完成这个编译,我必须使用-fpermissive
。)
考虑到现在64位CPU是非常常见的,值得一提的是unsigned int
可能只有32位,在这种情况下this
指针有64位。因此,在这种情况下,reinterpret_cast
会截断一半的比特。
亲爱的孩子们。
请不要在家里这样做。