#include <iostream.h>
 class point	//point 类的定义
{
 public:	
  point(int a=0,int b=0);//构造函数
  ~point();
  void display(void);
  void move(int xx,int yy);
  int point::*p;//成员指针
 private:	
  int x;
  int y;
};
//成员函数的实现
 point::point(int a,int b)
{
  x=a;
  y=b;
  p=&point::x; 
  cout<<"x="<<x<<" 构造函数被调用"<<endl;
}
 point::~point()
{
  cout<<"x="<<x<<" 析构函数被调用"<<endl;
}
 void point::display(void)
{
  cout<<"x="<<x<<" y="<<y<<endl;
}
 void point::move(int xx,int yy)
{
  x+=xx;
  y+=yy;
}
//主程序
 int main()
{
  point a,*p;	
  void (point::*q)(void);//定义指向成员函数的指针
  p=&a;//对象指针p指向对象a
  q=point::display;//成员指针q指向point类的成员函数display 
  a.display();//利用对象名访问对象的成员函数
  p->display();//利用对象指针访问对象的成员函数
  (a.*q)();        //利用对象名和成员指针访问对象的成员函数
  (p->*q)();        //利用对象指针和成员指针访问对象的成员函数
  cout<<a.*(a.p)<<endl;//利用对象名和成员指针访问对象的数据成员
  cout<<p->*(a.p)<<endl;//利用对象指针和成员指针访问对象的数据成员
  return(0);
}
 
