C++中如何获取类成员的指针


我们都知道C++ class中有三种成员函数,static(静态的),nonstatic(非静态的),virtual(虚拟的)各种成员函数的指针各有区别,以下是一个完整的例子:(注意红颜色的区别
class A 
{
public:
   static void staticmember(){cout<<"static"<
   void nonstatic(){cout<<"nonstatic"<
   virtual void virtualmember(){cout<<"virtual"<
};
int main()
{
  A a;
  //static member,取得的是该函数在内存中的实际地址,而且因为static成员是全局的,所以不能用A::限定符
  void (*ptrstatic)()= &A::staticmember;      
  //nonstatic member 取得的是该函数在内存中的实际地址     
  void (A::*ptrnonstatic)() = &A::nonstatic;
 //虚函数取得的是虚函数表中的偏移值,这样可以保证能过指针调用时同样的多态效果
  void (A::*ptrvirtual)() = &A::virtualmember;
 //函数指针的使用
  ptrstatic();
  (a.*ptrnonstatic)();
  (a.*ptrvirtual)();
}

你可能感兴趣的:(C++之技术,c++,成员函数,函数地址,指针,函数指针)