码迷,mamicode.com
首页 > 其他好文 > 详细

类的成员函数指针

时间:2015-03-30 16:02:24      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

一个类的成员函数指针使用前,必须添加一个类的对象。

普通类的成员函数指针建立:

返回值 (类名::指针名)(函数参数)=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 }

 

类的成员函数指针

标签:

原文地址:http://www.cnblogs.com/BlackCat86/p/4378123.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!