C++中查找成员函数地址的方法
发布时间
阅读量:
阅读量
C++中获取成员函数地址的方法
文章目录
- C++中获取成员函数地址的实现途径
-
- @[toc]
- 引言
- 方式1:借助联合体的共享存储特性
- 方式2:利用汇编语言获取成员函数偏移量以确定地址
- 应用方式及测试实例
-
前言
目前,我归纳出两种在实际应用中较为高效且操作简便的方式,可用于获取成员函数的地址。其中第一种方式是借助函数模板来实现,第二种方式则是在 .cpp 文件中通过汇编语言中的 offset 指令直接完成。
之所以需要获取成员函数的地址,主要原因是可以通过特定的技术手段,使成员函数被用作回调函数,从而避免依赖全局静态函数的使用。
方法1:通过联合体的共享储存机制
template<typename AddressType, typename FuncPtrType>
AddressType union_cast(FuncPtrType func_ptr) // 获取类内成员函数的函数地址
{
union
{
FuncPtrType f;
AddressType d;
}u;
u.f = func_ptr;
return u.d
全部评论 (0)
还没有任何评论哟~
