首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

哪位高手能详细解释一下 (*(void*)this)[9]

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

谁能详细解释一下 (*(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个*。

热点排行