知识大全 怎样将成员函数指针强制转换成void*指针

Posted 指针

篇首语:青春须早为,岂能长少年。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 怎样将成员函数指针强制转换成void*指针相关的知识,希望对你有一定的参考价值。

  采用取成员函数指针的地址的方法 先把指向成员函数指针的指针强制转化为别的类型 如unsigned* 当然同样可以通过此转化后的指针经过相反的变换来调用成员函数 于是乎要转化为void*的问题也随之可解 如下示例 /* VS 下编译运行 */class AbstractMethodpublic: virtual void show()  // = ;  // 可以是纯虚函数 这里为了测试方便不使用纯虚函数!

  void fun()   cout << I was called! << endl; 

  void fun ()   cout << I was called! << endl; ;

  int main() // 定义成员函数指针类型 typedef void (AbstractMethod::*MFP)(void);

  // 转化函数指针为别的指针 MFP mfp = &AbstractMethod::show;   unsigned* tmp =  (unsigned*)&mfp ; cout << hex << *tmp << endl;

  MFP mfp = &AbstractMethod::fun; tmp = (unsigned*)&mfp ; cout << hex << *tmp << endl;

  MFP mfp = &AbstractMethod::fun ; tmp = (unsigned*)&mfp ; cout << hex << *tmp << endl;

  // 通过转化后的指针调用成员函数 AbstractMethod am; MFP* addr = (MFP*)tmp; (am *mfp )(); (am *(*addr))();

  return ;

  验证上述方法取得的成员函数地址是否正确 在调试是查看临时变量函数指针的值和输出的是否一样 可以根据调试时的反汇编进行结果验证 最好的办法就是如上例子通过转化后的指针来调用成员函数

cha138/Article/program/net/201311/13364

相关参考

知识大全 C/C++语言中指向函数的指针

C/C++语言中指向函数的指针  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在C语言中函数本身不是

知识大全 在C#中实现类似C++函数指针数组的功能

在C#中实现类似C++函数指针数组的功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在大家开

知识大全 php feof函数

如果文件指针到了EOF或者出错时则返回TRUE否则返回一个错误(包括socket超时)其它情况则返回FALSE 定义和用法feof()函数检测是否已到达文件末尾(eof)如果文件指针到了eo

强制性转股的分类

强制性转股的分类1、到期无条件强制性转股在转换期内未转换成股票的可转换公司债券,在债券到期日时将自动强制转换为发行人的股票,并且,可转换公司债券持有人无权要求发行人以现金清偿可转换公司债券的本金和应计

知识大全 pHeadA,pHeadB,请写一函数将两链表中data

有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜

知识大全 最近面试过的一些编程和算法面试题

给一颗二叉树每个节点都有左孩子指针和右孩子指针(当然可能为空)要求给每个节点添加一个指针这个指针要指向它的同一层的紧临的兄弟(要求写代码)给一个单链表将其反转(要求写代码)写一个函数传入一个字符串判断

知识大全 数据结构之顺序表上基本运算的实现[2]

  顺序表的销毁  顺序表使用完后必须要销毁否则可能会造成内存资源浪费等问题顺序表的销毁操作实际上是初始化操作的逆运算由于要修改顺序表的指针变量所以要将指针地址传给该函数首先判断要销毁的表是否存在然后

知识大全 分析指针数组与数组指针的区别和应用

分析指针数组与数组指针的区别和应用区别很容易解释:指针数组是数组,它里面每个元素都是个指针……数组指针是指针,它指向一个数组……应用嘛,这个就比较发散了。。。。一个存指针的数组的应用就是开放式哈希表,

知识大全 数据结构 10.16 链式基数排序

  类似于表插入排序附设指针数组将顺序表视作一个静态链表利用修改指针实现分配和收集同时设置rd个队列的头指针和尾指针分别指示各队列的头结点和尾结点在链表中的位置  首先初始化空队列即将每个队列的头指针

充电电池是怎样实现它的能量转换?

每种电池都具有电化学转换的能力,即将储存的化学能直接转换成电能,就二次电池(也叫蓄电池)而言(另一术语也称可充电使携式电池),在放电过程中,是将化学能转换成电能;而在充电过程中,又将电能重新转换成化学