[工学]不错!!面向对象的一些基本概念.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]不错!!面向对象的一些基本概念

友元函数的定义和使用 class c {int r; friend void a(); }; //友元函数的声明 void a(){cout5;} //友元函数的定义 void main(){c cc; cc.a();}//error 为什么错了? 在这个事例中,我们可以推理出,友元函数不是成员函数。 友元函数有什么作用呢? #includeiostream.h class a{int r; friend void f(a);}; void f(a d){coutd.r;} //对。正确用法 void s(a d){coutd.r;} //error /* 函数s不是友元函数,所以不能访问对象aa的private成员r,但可以访问对象的public成员 */ void main(){a aa; f(aa);} 用友元函数求圆的面积 #includeiostream.h #define PI 3.14 class circle{ int r; friend float area(circle); public: circle(int x){r=x;} }; float area(circle a){return PI*a.r*a.r;} void main(){circle c(2); coutarea(c);} 可以在类的内部定义友元函数 #includeiostream.h #define PI 3.14 class circle{ int r; friend float area(circle a){ return PI*a.r*a.r; } public: circle(int x){r=x;} }; void main(){ circle c(2); coutarea(c); } 某个类的成员函数用作另1个类友元函数 #includeiostream.h class c2; class c1{ int m1; public:void mc1(c2); //mc1为c1的成员函数 }obj1; class c2{ int m2; friend void c1::mc1(c2); //friend }obj2; void c1::mc1(c2 r2){coutr2.m2;}//定义 void main(){obj1.mc1(obj2);} 友元类:其所有的成员函数都是友元函数 多态性 多态性是OOP的关键技术之一。C++提供了两种多态性: 编译时的多态性,它的实现是通过: 重载函数 重载运算符 运行时的多态性,又叫动态多态性。它的实现是通过: 继承 虚函数 注: 面向对象程序设计:OOP Object Oriented Programming 虚函数 动态多态性主要是通过虚函数实现的。 见识虚函数 #includeiostream.h class c1 {public: virtual void f(){coutc1;}}; class c2:public c1 {public: void f(){coutc2;}}; void main(){c1 obj1,*pc1; c2 obj2; pc1=obj1; pc1-f(); pc1=obj2; pc1-f(); } 不使用虚函数 #includeiostream.h class c1 {public: void f(){coutc1;}}; class c2:public c1 {public: void f(){coutc2;}}; void main(){c1 obj1,*pc1; c2 obj2; pc1=obj1; pc1-f(); pc1=obj2; pc1-f(); } 通过以上两道例题的对比,我们发现: 声明了基类指针c1 *pc1; 当不用虚函数时, pc1=obj1;则pc1-f()的返回值等于c1 pc1=obj2;则pc1-f()的返回值等于c1 当使用虚函数时, pc1=obj1;则pc1-f()的返回值等于c1 pc1=obj2;则pc1-f()的返回值等于c2 使用了虚函数技术后使我们感觉:用上了类似函数重载的技术 纯虚函数 ?定义格式: virtual 数据类型 函数名(参数列表)=0; 纯虚函数没有函数的实现部分,即没有{...} 抽象类:包含纯虚函数的类 ? ? 抽象类只能作为派生类的基类,不能用来定义对象。 见识“抽象类”和“纯虚函数” #includeiostream.h class

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档