一个类的成员函数指针使用前,必须添加一个类的对象。
普通类的成员函数指针建立:
返回值 (类名::指针名)(函数参数)=void (A::*pt)(int,bool);
初级实例代码一:
1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 public: 7 void set(int x,int y){i=x,j=y;} 8 int get(){return i*j;} 9 private: 10 int i; 11 int j; 12 }; 13 14 15 typedef void (A::*pt)(int ,int );//建立成员函数指针 16 17 18 void main() 19 { 20 pt p;//创建一个A类的函数指针p 21 A a; //创建一个A类的对象a 22 p=&A::set;//成员函数指针取函数地址 23 (a.*p)(10,20);//如何调用成员函数指针 24 cout<<a.get()<<endl; 25 system("pause"); 26 }
初级实例代码二:
1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 public: 7 virtual void s1()=0; 8 virtual void s2()=0; 9 }; 10 11 class B:public A 12 { 13 public: 14 virtual void s1(){cout<<"我是B类的s1\n";} 15 virtual void s2(){cout<<"我是B类的s2\n";} 16 }; 17 18 class C:public B 19 { 20 public: 21 virtual void s1(){cout<<"我是C类的s1\n";} 22 virtual void s2(){cout<<"我是C类的s2\n";} 23 }; 24 25 void main() 26 { 27 void (A::*pt)()=0; //成员函数指针pt,该指针指向抽象类A的成员函数 28 A *p=0; //建立一个类A的指针p并且将内存地址赋值为0 29 p=new B; //创建B,让p指向它 30 pt=&A::s1; //成员函数指针pt,取类A的s1函数的内存地址 31 (p->*pt)(); //通过指针p来访问对象,通过pt来访问该对象的成员函数 32 delete p; 33 system("pause"); 34 }
时间: 2024-10-13 19:36:15