- 1、本文档共517页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C(面向对象程序设计)研讨
* 8.1.4 运算符重载示例(续) 例8.6:下标运算符。 #include iostream.h class vector { public: vector(int size) {v=new int[size];} ~vector() {delete[] v;} int operator [](int i); private: int *v; }; int vector::operator [](int i) { return v[i]; } * 8.1.4 运算符重载示例(续) void main() { vector a[5]; for(int i=0;i5;i++) a[i]=i; a[2]=12; for(int i=0;i5;i++) couta[i]endl; } 输 出 0 1 12 3 4 * 8.1.4 运算符重载示例(续) 例8.7:用函数调用运算符实现函数f(x,y)=x*y+5。 #include iostream.h class F { public: double operator () (double x,double y) const; }; double F::operator () (double x,double y) const { return x*y+5; } void main() { F f; coutf(5.2,2.5)endl; } 输出: 18 * 8.2.1 子类型化和类型适应 1、子类型化 子类型:有一个特定的类型S,当且仅当它至少提供了类型T的行为时,称类型S是类型T的子类型; 公有继承可以实现子类型; 子类型关系是不可逆的; 派生类S是基 类T的子类型 子类型关系可以传递; * 8.2.1 子类型化和类型适应(续) 例8.8:分析下列程序的输出结果。 #include iostream.h class A { public: void Print() const {coutA::Print() called. endl;} }; class B:public A { public: void f() {} }; void f1(const A r) { 公有继承,B是A的子类型 * 8.2.1 子类型化和类型适应(续) r.Print(); } void main() { B b; f1(b); } 输 出 A::Print() called. 问题: 1、形参与实参类型不匹配? 2、若类型匹配是正确的,输出结果是什么? 类型适应 * 7.4.1 虚基类的引入和说明(续) 虚基类 非虚基类 B C A D B C D A A 虚基类与非虚基类的存储结构 * 7.4.2 虚基类的构造函数 派生类中只有一个虚基类子对象; 虚基类构造函数必须只被调用一次,目的是要保证虚基类子对象只被初始化一次; 最派生类:继承结构中建立对象时所指定的类; 虚基类子对象由最派生类的构造函数通过调用虚基类的构造函数进行初始化; 在一个成员初始化列表中出现对虚基类和对非虚基类构造函数的调用时,虚基类的构造函数先于非虚基类的构造函数的执行; 最派生类的构造函数的成员初始化列表中必须给出对虚基类的构造函数的调用;如果未列出,则相应的虚基类必须有缺省构造函数; * 7.4.2 虚基类的构造函数(续) 若定义E e;则E是最派生类; 若定义D d;则D是最派生类; 若定义B b;则B是最派生类; 若定义C c;则C是最派生类; 最派生类 B D C A E B(…):A(…) ... C(…):A(…) ... D(…):B(...),C(…),A(…) ... E(…):D(...),A(…) ... 构造函数 * 7.4.2 虚基类的构造函数(续) 例7.9:分析下列程序的输出结果。 #include iostream.h class A { public: A(const char *s) { coutsendl; } ~A() {} }; class B:virtual public A { public: B(const char *s1,const char *s2):A(s1) { couts2endl; } }; class C: virtual public A * 7.4.2 虚基类的构造函数(续) { public: C(const char *s1,const char *s2):A(s1)
您可能关注的文档
- 8生物医学材料.12研讨.ppt
- 8第八章中级财务会计资产减值研讨.ppt
- 8植物生长生理研讨.ppt
- 8绩效管理研讨.ppt
- 8绿色食品包装贮运研讨.ppt
- 8羰基化过程研讨.ppt
- 8讨论议题研讨.doc
- 8级U9说课2015.3.30研讨.ppt
- 8讲:新闻传播法规的基础知识研讨.ppt
- 8路基路面强度指标检测研讨.ppt
- 注册验船师高频真题题库2025.docx
- 注册验船师高频题库带解析2025.docx
- 注册验船师考试必备资料2025.docx
- 注册验船师精选题库带分析2025.docx
- 注册验船师考前冲刺必刷题附答案2025.docx
- 新高考生物二轮复习讲练测第10讲 人体的稳态与免疫调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第13讲 生物技术与工程(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第7讲 遗传的基本规律与伴性遗传(检测)(原卷版) .docx
- 新高考生物二轮复习讲练测第13讲 生物技术与工程(检测)(原卷版).docx
文档评论(0)