楼 主
请教_go32_dpmi_lock_code如何锁类成员函数
发表于 2006-06-18 10:28 · 中国 北京 鹏博士BGP
新手上路
★
积分 18
发帖 3
注册 2006-06-18 10:26
20年会员
UID 57197
状态 离线
第 2 楼
发表于 2006-06-21 09:22 · 中国 广东 广州 珠江宽频
初级用户
★
积分 26
发帖 9
注册 2005-10-18 15:14
20年会员
UID 43665
性别 男
状态 离线
第 3 楼
发表于 2006-06-22 12:05 · 中国 上海 杨浦区 电信
高级用户
★★
积分 653
发帖 252
注册 2006-04-16 19:48
20年会员
UID 53939
状态 离线
看是什么成员,普通成员和静态成员直接取址就可以了。
静态方法和常规C函数其实是一样的,除了名称粉碎机制,但这不影响取址。
普通成员实际就是隐式传递一个this指针的常规函数(同样除了名称粉碎,并且某些编译器中,生成代码的调用规范也稍有不同,但这也不影响取址)。
例如:void (MyClass::* p)() = &MyClass::MyMemberFunc; // p 指向 MyClass::MyMemberFunc 的入口地址。
但是,虚函数虽然也可以取址,但由于它是需要运行时绑定的,所以其 “指针” 其实只是该函数在类的虚表中的偏移,并不指向真正要调用的函数入口地址(该地址只有在运行时才能确定)。
所以除了虚函数外,其它函数的指针都应该可以满足楼主的需要。
[ Last edited by asbai on 2006-6-22 at 12:06 ]
论坛跳转: