关于如何在一个类使用函数指针保存其子类的非静态成员函数

来源:互联网 发布:网络家长学校 编辑:程序博客网 时间:2024/05/17 01:11

#include<iostream>
using namespace std;
class A;
typedef void (A::*lpfn)();


class A
{
public:
lpfn fn;
};
class B:public A
{
public:
void OK(){cout<<"OK"<<endl;}
};
int main(void)
{
B b;
b.fn =(lpfn) &B::OK;
(b.*(b.fn))();/*这个位置比较重点。个人理解是OK代表函数体在类中的偏移量,b.fn=&B::OK,取的时OK的偏移量所在存储单元的

地址,*b.fn得到OK的偏移量,b.*b.fn=b的基地址加上OK在类中的偏移量,得到函数OK所在的内存地址*/
return 0;
}


原创粉丝点击