C/C++ 获取函数地址 您所在的位置:网站首页 函数名就是函数地址吗 C/C++ 获取函数地址

C/C++ 获取函数地址

#C/C++ 获取函数地址| 来源: 网络整理| 查看: 265

动态函数,只能通过对象来调用。因为在动态成员函数中,往往都需要访问对象的成员变量。我们知道同一类型的不同对象,它们拥有类中成员变量的不同副本,所以假如动态成员函数由类来调用,我们无法知道在函数中访问的是哪一个对象的成员变量。

要输出动态函数的地址,必须通过对象来获取。

C++调用非静态的成员函数时,采用的是一种 __thiscall 的函数调用方式。采用这种调用方式,编译器在编译的时候,会在调用的函数形参表中增加一个指向调用该成员函数的指针,也就是我们经常说的this指针。调用的形式类似于Base::f1(Base* this, otherparam…),在函数体中,涉及到对象的成员变量或者其他成员函数,都会通过这个this指针来调用,从而达到在成员函数中处理调用对象所对应的数据,而不会错误处理其他对象的数据。可见,虽然我们必须通过对象来调用动态函数,但是其实我们访问的都是同一个成员函数。所以我们采用&Base::f1来获取成员函数地址是没错的,动态函数同样是跟类绑定而不是跟对象绑定的。

出错的原因是,输出操作符



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有