读书人

哪位高手能详细解释一下 (*(void*)thi

发布时间: 2012-03-21 13:33:15 作者: rapoo

谁能详细解释一下 (*(void***)this)[9]
rt,遇到一个汇编调用的类函数的例子,谁能一步一步详细解释一下这句代码的含义

[解决办法]
(*(void***)this)[9]
(void***)this:将this强制类型转换为void***类型
*(void***)this:取void***类型所指的内容,其类型为void**
(*(void***)this)[9]:取(*(void***)this)这个void**类型变量的第9个,其类型为void*

[解决办法]
this是类对象指针,
(void*)this是指向类对象的首地址的指针。
*(void**)this是指针的解引用,指向了虚表的首地址
*(void***)this是2维指针,指向了存放虚函数地址数组的首地址。
要获得第10个就指定下标,就变成了(*(void***)this)[9],就是该对象的第10个虚函数

简单理解:
this-->vfptr-->virtual func address array
需要两次指向(左边一个*,右边一个下标,两次解引用),最终获得的是函数指针,还是指针类型,所以要比解引用次数多1,就是3个*。

读书人网 >C++

热点推荐