免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+指向类成员函数的指针最近在开发中用到了函数指针,于是想整理了一下有关函数指针的概念。O(_)O首先 函数指针是指向一组同类型的函数的指针;而类成员函数我们也可以相似的认为,它是指向同类中同一组类型的成员函数的指针,当然这里的成员函数更准确的讲应该是指非静态的成员函数。前者是直接指向函数地址的,而后者我们从字面上也可以知道 它肯定是跟类和对象有着关系的。函数指针实例:typedef int (*p)(int,int);/定义一个接受两个int型且返回int型变量的函数指针类型int func(int x,int y)printf(func:x=%d,y=%d/n,x,y);return (xy?x:y);int main()p fun=func;/定义函数指针并给它赋上一个函数指针coutmin:(*fun)(4,5)endl;/为什么*fun需要用()扩起来呢?因为*的运算符优先级比()低,如果不用()就成了*(fun()return 0;而“指向类成员函数的指针”却多了一个类的区别:class Apublic:int func(int x,int y)printf(A:func:x=%d,y=%d/n,x,y);return (xy?x:y);typedef int (A:*p)(int,int);/指针名前一定要加上所属类型类名 A:的限定int main()p fun=&A:func;A a; /因为成员函数地址的解引用必须要附驻与某个对象的地址,所以我们必须创建某个对象。coutmin:(a.*fun)(4,5)endl;return 0;嘿嘿。只是用起来 .* 感觉怪怪滴。接下来 我们可以再扩展一下下:#include #include #include using namespace std;class Apublic:int func1(int x,int y)printf(A:func:x=%d,y=%d/n,x,y);return (xy?x:y);class B:public Apublic:virtual int func2(int x,int y)printf(B:func:x=%d,y=%d/n,x,y);return (x+y);typedef int (A:*p)(int,int);/指针名前一定要加上所属类型类名 A:的限定typedef int (B:*p0)(int,int);int main()A a; /因为成员函数地址的解引用必须要附驻与某个对象的地址,所以我们必须创建某个对象。B b;p fun=&A:func1;cout(a.*fun)(4,5)endl;cout(b.*fun)(4,5)endlendl;fun=&A:func2;cout(a.*fun)(4,5)endl;/请注意这里调用的是虚函数,嘿嘿 还真神奇 类成员函数指针也支持多态。cout(b.*fun)(4,5)endlendl; /fun=&B:func2; /这样式错误滴,因为不存在派生类的指向类成员函数的指针到基类的指向类成员函数的指针的隐式转换fun=(int (A:*)(int,int)&B:func2;/应该进行强制转换 cout(a.*fun)(4,5)endl; cout(b.*fun)(4,5)endlendl;p0 fun0=&B:func2;cout(a.*fun)(4,5)endl;cout(b.*fun)(4,5)endlendl;fun0=&A:func2; /正确,因为这里进行了隐式转换cout(a.*fun)(4,5)endl;cout(b.*fun)(4,5)endlendl;/从上面我们不难发现 指向类成员函数的指针基类和派生类的关系和指向类对象的指针基类和派生类的关系完全相反,/基类成员函数的布局被认为是派生类成员函数布局的一个子集return 0;接下 是有关模板类的类成员函数指针的使用实例如下:#include #include #include using namespace std;class Apublic:int func(int x,int y)printf(A:func : x=%d,y=%d/n,x,y);return (xy?x:y);templateclass Cpublic:T c;void Print()int (T:*p)(int,int)=&T:func;(c.*p)(4,5);int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年西安交通大学学科办管理辅助人员招聘备考题库参考答案详解
- 2026年简阳市三星幼儿园临聘人员招聘备考题库附答案详解
- 2026年洛阳商业职业学院招聘备考题库及完整答案详解一套
- 中国人民银行清算总中心所属企业城银清算服务有限责任公司2026年校园招聘16人备考题库及1套完整答案详解
- 2026年滨州渤中能源有限公司公开招聘工作人员备考题库及参考答案详解
- 大台街道2026年第一次城市协管员招聘备考题库及一套参考答案详解
- 2026年武汉市中医医院医师岗位招聘备考题库及一套答案详解
- 2026年龙岩市直机关幼儿园莲东分园招聘备考题库及一套完整答案详解
- 2026年西安交通大学继续教育学院招聘备考题库及答案详解参考
- 2026年桐庐县供销合作总社社属企业公开招聘工作人员备考题库及完整答案详解一套
- 2026长治日报社工作人员招聘劳务派遣人员5人备考题库附答案
- 四省天一联考2025-2026学年高三上学期1月月考物理试题
- 2025至2030中国跨境电商系统行业发展趋势分析与未来投资战略咨询研究报告
- 2026年【招聘备考题库】黑龙江省生态环保集团有限公司面向社会公开招聘管理人员备考题库及1套完整答案详解
- 2026届山东省潍坊市高一生物第一学期期末监测模拟试题含解析
- 水库安全运行管理培训课件
- 2026年中国热带农业科学院橡胶研究所高层次人才引进备考题库有答案详解
- 2026年保安员资格证理论知识考试题库
- 2026年孝昌县供水有限公司公开招聘正式员工备考题库及一套完整答案详解
- 收费室课件教学课件
- DB34∕T 5176-2025 城市轨道交通智能运维系统建设指南
评论
0/150
提交评论