- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
class A { public: A(){ coutA class\n; } ~A(){coutclass A\n; } }; class D1 { public: D1(){ cout“D1 class\n; } ~D1(){coutclass D1\n; } }; class D2: public D1, virtual public A { public: D2(){ cout“D2 class\n; } ~D2(){coutclass D2\n; } }; class D3: public D1, virtual public A { public: D3(){ cout“D3 class\n; } ~D3(){coutclass D3\n; } }; class D4: public D2, virtual public D3 { public: D4(){ cout“D4class\n; } ~D4(){coutclass D4\n; } }; void main() { D4 d; } D4 D1 D2 A D3 程序输出结果 : A class D1 class D3 class D1 class D2 class D4 class class D4 class D2 class D1 class D3 class D1 class A * §6.4 赋值兼容规则 class A { int m, n; ………… }; class B { ………… }; main() { A x; B y; //什么情况下可以? x=y; } 不同类型的对象之间的转换 结论: 1、B必需是A的派生类。 2、B对A必需是公有继承的 * 赋值兼容规则 赋值兼容规则 赋值兼容规则:是指在公有继承的前提下,基类对象与公有派生类对象之间的自动类型转换和赋值的规则。 规则只对公有继承有效。如果对私有继承或保护继承使用,则会出现语法错误。 由于派生类中包含从基类继承的成员,所以可以将派生类对象赋值给基类对象,在需要基类对象的任何时候都可以其用派生类对象代替。 赋值兼容规则主要包括两个内容:基类对象与派生类对象之间的关系;基类对象的指针与派生类对象的指针之间的关系。 * 基类对象与派生类对象之间的关系 可以用派生类对象给基类对象赋值,反之不行 。 可以用派生类对象初始化基类对象或基类的引用。 如果函数的形参是基类对象或基类对象的引用,则对应的实参可以是派生类的对象。 可以把派生类对象的地址赋给指向其基类对象的指针变量。反之不行。 可以把派生类对象的指针赋值给基类对象的指针。反之则错。 base b; derived d; b=d; d=b; //错 derived d; base b(d); base rb=d; base b, *pb; derived d, *pd; pb=d; pd=b; //错 base *pb; derived d, *pd=d; pb=pd; pd=pb; //错 * #include iostream.h class A { int x; public: A(int x1){x=x1; } void print() {coutx=x ; } }; class B: public A { int y; public: B(int x1,int y1):A(x1){y=y1;} void print() { A::print(); couty=yendl; } }; void main() { B b1(10,20); b1.print(); A a(b1); a.print(); coutendl; B b2(10,30); b2.print(); A ra=b2; ra.print(); coutendl; B b3(10,40); b3.print(); a=b3; a.print(); coutendl; } 结果 : x=10 y=20 x=10 x=10 y=30 x=10 x=10 y=40 x=10 * #include iostream.h class A { int x; public: A(int x1){x=x1; } void print()
您可能关注的文档
- 电工学课件:第七章 电动机.ppt
- C++程序设计与实践:11-模板和泛型编程.ppt
- C++程序设计与数据结构基础:第1章 C++程序设计基础.ppt
- C++程序设计与数据结构基础:第2章 C++简单程序设计.ppt
- C++程序设计与数据结构基础:第3章 数组与指针.ppt
- C++程序设计与数据结构基础:第5章 类和对象.ppt
- C++程序设计与数据结构基础:第7章 多态性和虚函数.ppt
- C++程序设计与数据结构基础:第8章 C++ IO流标准库.ppt
- C++程序设计与数据结构基础:第10章 非线性结构.ppt
- C++程序设计与数据结构基础:第11章 查找和排序.ppt
- 2024年陕西咸阳亨通电力(集团)有限公司供电服务业务部直聘用工招聘145人笔试参考题库附带答案详解 .docx
- 2024年中建四局土木工程有限公司校园招聘笔试参考题库附带答案详解 .docx
- 2024年四川雅茶贸易有限公司公开招聘和考察聘用人员3人笔试参考题库附带答案详解 .docx
- 2024年中国烟草总公司辽宁省公司公开招聘拟录用人员(166人)笔试参考题库附带答案详解 .docx
- 2024江苏连云港中诚物业管理有限公司招聘工作人员1人笔试参考题库附带答案详解 .docx
- [毕节]2025年贵州毕节市引进人才649人笔试历年参考题库附带答案详解.docx
- 2024年度中国东航技术应用研发中心有限公司校园招聘笔试参考题库附带答案详解 .docx
- 2024年福建省厦门盐业有限责任公司春季人才招聘1人笔试参考题库附带答案详解 .docx
- 2024年山东省环保发展集团绿能有限公司职业经理人招聘2人笔试参考题库附带答案详解 .docx
- 2024年安徽滁州郊源阳光电力维修工程有限责任公司招聘41人(第一批次)笔试参考题库附带答案详解 .docx
文档评论(0)