您的位置:首页 > 其它

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

2013-08-06 21:29 357 查看
#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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐