- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C06多态性与虚函数概要
* #includeiostream.h class Point { int x,int y; public: Point () {} Point (int i,int j) { x=i;y=j;} void diap() {cout“(”x “,” y“)”endl;} Point operator+(Point p) {return Point(x+p.x,y+p.y);} }; void main() {Point p1(3,4),p2(2,9),p3; p3=p1+p2; p3.disp(); } 执行结果 (5,13) * #includeiostream.h class Point { int x,int y; public: Point () {} Point (int i,int j) { x=i;y=j;} void diap() {cout“(”x “,” y“)”endl;} friend Point operator+(Point p1, Point p1) {return Point(p1.x+p2.x,p1.y+p2.y);} }; void main() {Point p1(3,4),p2(2,9),p3; p3=p1+p2; p3.disp(); } 执行结果 (5,13) 重载为友元函数 * 3 虚函数 3.1 虚函数的概念 虚函数是在基类中冠以关键字 virtual 的成员函数。它提供了一种接口界面。虚函数可以在一个或多个派生类中被重定义。 * 静态联编和动态联编 静态联编指联编工作出现在编译连接阶段,又称早期联编,在程序开始运行前完成,又称静态绑定。 在程序执行时才能确定将要调用的函数称为动态联编,晚期联编。 C++规定,动态联编是在虚函数的支持下实现的。 * 在C++语言中,是通过将一个函数定义成虚函数来实现运行时的多态的。如果一个函数被定义为虚函数,那么,即使是使用指向基类对象的指针来调用该成员函数,C++也能保证所调用的是正确的特定于实际对象的成员函数。 如果类c1,c2…由基类base派生而来,base有一个用virtual修饰的公有或保护函数成员f(),而在c1,c2…中的一些类中重新定义了成员函数f(),而对f()的调用都是通过级基类的对象或指针进行的,在程序执行时才决定是调用c1还是c2或其他派生类中定义的f(),这样的函数f()称为虚函数。 * 一旦一个函数在基类中第一次声明时使用了virtual了关键字,那么,当派生类重载该成员函数时,无论时否使用了virtual 关键字,该成员函数都将被看作一个虚函数,也就是说,虚函数的重载函数仍是虚函数。 注意:在派生类重定义虚函数时必须有相同的函数原型,包括返回类型,函数名、参数个数、参数类型的顺序必须相同。虚函数必须是类的成员函数。不能为全局函数,也不能为静态函数。不能将友员说明为虚函数,但虚函数可以是另一个类的友员。析构函数可以是虚函数,但构造函数不能为虚函数。 * #includeiostream.h class Point { int x,int y; public: Point (int x1,int y1) { x1=x;y1=y;} int area() {return 0;} }; Class Rect:Public Point { int l,w; public: Rect(int x1,int y1, int l1,int w1): Point (x1, y1) {l=l1;w=w1;} int area() {return l*w;} }; void fun(Point p) {coutp.area()endl; } void main() {Rect rec(2,4,10,6) fun(rec); } 执行结果:0 静态联编使fun()函数中p所引用的对象绑定到Point类上。 * #includeiostream.h class Point { int x,int y; public
您可能关注的文档
最近下载
- 全套电子课件:物理(第六版).ppt
- 2024-2025学年高中信息技术(信息科技)必修1 数据与计算沪科版(2019)教学设计合集.docx
- 2025年中国金枪鱼交易中心行业全景调研及竞争格局预测报告.docx
- (本科)东南亚经济与贸易全套教学课件完整版PPT.pptx VIP
- Notre-Dame de Paris 巴黎圣母院音乐剧歌词(中法双语全).docx VIP
- 特种设备安全管理培训课件.pptx
- 牧场物语矿石镇的伙伴们完全攻略.doc VIP
- “十五五”林业发展规划.docx
- 2024-2025学年中职语文职业模块高教版(2023)教学设计合集.docx
- 温湿度计校准作业指导书.pdf VIP
文档评论(0)