Advertisement

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)

还没有任何评论哟~