欢迎来到天天文库
浏览记录
ID:20329274
大小:34.50 KB
页数:5页
时间:2018-10-12
《分享某人c++指向类成员函数指针》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C++指向类成员函数的指针最近在开发中用到了函数指针,于是想整理了一下有关函数指针的概念。O(∩_∩)O~首先函数指针是指向一组同类型的函数的指针;而类成员函数我们也可以相似的认为,它是指向同类中同一组类型的成员函数的指针,当然这里的成员函数更准确的讲应该是指非静态的成员函数。前者是直接指向函数地址的,而后者我们从字面上也可以知道它肯定是跟类和对象有着关系的。函数指针实例:typedefint(*p)(int,int);//定义一个接受两个int型且返回int型变量的函数指针类型intfunc(intx,i
2、nty){printf("func:x=%d,y=%d/n",x,y);return(x3、x=%d,y=%d/n",x,y);return(x#include4、ostream>#includeusingnamespacestd;classA{public:intfunc1(intx,inty){printf("A::func:x=%d,y=%d/n",x,y);return(xy?x:y);}};classB:publicA{public:virtualintfunc2(intx,inty)5、{printf("B::func:x=%d,y=%d/n",x,y);return(x+y);}};typedefint(A::*p)(int,int);//指针名前一定要加上所属类型类名A::的限定typedefint(B::*p0)(int,int);intmain(){Aa;//因为成员函数地址的解引用必须要附驻与某个对象的地址,所以我们必须创建某个对象。Bb;pfun=&A::func1;cout<<(a.*fun)(4,5)<6、l;fun=&A::func2;cout<<(a.*fun)(4,5)<7、un)(4,5)<8、成员函数布局的一个子集return0;}接下是有关模板类的类成员函数指针的使用实例如下:#include#include#includeusingnamespacestd;classA{public:intfunc(intx,inty){printf("A::func:x=%d,y=%d/n",x,y);return(x
3、x=%d,y=%d/n",x,y);return(x#include4、ostream>#includeusingnamespacestd;classA{public:intfunc1(intx,inty){printf("A::func:x=%d,y=%d/n",x,y);return(xy?x:y);}};classB:publicA{public:virtualintfunc2(intx,inty)5、{printf("B::func:x=%d,y=%d/n",x,y);return(x+y);}};typedefint(A::*p)(int,int);//指针名前一定要加上所属类型类名A::的限定typedefint(B::*p0)(int,int);intmain(){Aa;//因为成员函数地址的解引用必须要附驻与某个对象的地址,所以我们必须创建某个对象。Bb;pfun=&A::func1;cout<<(a.*fun)(4,5)<6、l;fun=&A::func2;cout<<(a.*fun)(4,5)<7、un)(4,5)<8、成员函数布局的一个子集return0;}接下是有关模板类的类成员函数指针的使用实例如下:#include#include#includeusingnamespacestd;classA{public:intfunc(intx,inty){printf("A::func:x=%d,y=%d/n",x,y);return(x
4、ostream>#includeusingnamespacestd;classA{public:intfunc1(intx,inty){printf("A::func:x=%d,y=%d/n",x,y);return(xy?x:y);}};classB:publicA{public:virtualintfunc2(intx,inty)
5、{printf("B::func:x=%d,y=%d/n",x,y);return(x+y);}};typedefint(A::*p)(int,int);//指针名前一定要加上所属类型类名A::的限定typedefint(B::*p0)(int,int);intmain(){Aa;//因为成员函数地址的解引用必须要附驻与某个对象的地址,所以我们必须创建某个对象。Bb;pfun=&A::func1;cout<<(a.*fun)(4,5)<6、l;fun=&A::func2;cout<<(a.*fun)(4,5)<7、un)(4,5)<8、成员函数布局的一个子集return0;}接下是有关模板类的类成员函数指针的使用实例如下:#include#include#includeusingnamespacestd;classA{public:intfunc(intx,inty){printf("A::func:x=%d,y=%d/n",x,y);return(x
6、l;fun=&A::func2;cout<<(a.*fun)(4,5)<7、un)(4,5)<8、成员函数布局的一个子集return0;}接下是有关模板类的类成员函数指针的使用实例如下:#include#include#includeusingnamespacestd;classA{public:intfunc(intx,inty){printf("A::func:x=%d,y=%d/n",x,y);return(x
7、un)(4,5)<8、成员函数布局的一个子集return0;}接下是有关模板类的类成员函数指针的使用实例如下:#include#include#includeusingnamespacestd;classA{public:intfunc(intx,inty){printf("A::func:x=%d,y=%d/n",x,y);return(x
8、成员函数布局的一个子集return0;}接下是有关模板类的类成员函数指针的使用实例如下:#include#include#includeusingnamespacestd;classA{public:intfunc(intx,inty){printf("A::func:x=%d,y=%d/n",x,y);return(x
此文档下载收益归作者所有