如何定义一个类成员的指针(成员变量或成员函数)

时间:2022-12-25 18:57:13

首先看我从网上引用的东西:

“指向数据成员的指针格式如下:

        <
类型说明符><类名>::*<指针名>

 

       指向成员函数的指针格式如下:

        <
类型说明符>(<类名>::*<指针名>)(<参数表>)
例如,设有如下一个类A

        class   A
        {
        public:
                int   fun   (int   b)   {   return   a*c+b;   }
                A(int   i)   {   a=i;   }
                int   c;
        private:
                  int   a;
        };

       
定义一个指向类A的数据成员c的指针pc,其格式如下:

        int   A::   *pc   =   &A::c;

       
再定义一个指向类A的成员函数fun的指针pfun,其格式如下:

        int   (A::   *pfun)(int)   =   A::fun;

  ”

/////////////////////////////////////////////////////////////////////////////////

  (在书上看到这些类似的东西,比较纳闷,于是就在网上找到了那篇东西~以下是我自己写的程序,在VC6下通过得了编译,但是在DEV-Cpp下又不行~~非常郁闷~)

#include <iostream>

using namespace std;

class A
{
      public:
         virtual void f()
         {
                 cout << "A::f was called" << endl;
                
         }
        
};

class B:public A
{
      public:
         virtual void f()
         {
                 cout << "B::f was called" << endl;
                
         }
        
};
int main()
{
    B b;
    void (A::*pf)()=A::f;
   
    (b.*pf)();
   
    cin.get();
 return 0;
   
}
有了指针,还必须通过一个具体的类来引用!因为引用的不是一个具体的对象.所以pf并没有一个确切的地址.而是一个对象内相对的一个地址.在成员函数前面都加上staic,那就可以作为普通函数指针来处理