继承与派生第十一讲初步_第1页
继承与派生第十一讲初步_第2页
继承与派生第十一讲初步_第3页
继承与派生第十一讲初步_第4页
继承与派生第十一讲初步_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十一讲继承与派生参考:C++程序设 本次议 现在要求为某学校馆设计一个管理系统, 等多种层次的学生,馆为全校学生和教职工提供借阅服务。馆按照的性质(中文、外文、新书)将借阅分为不同的借阅种类:中文借阅、外文人

---m_strName:---m_strName: m_iAge:int- think(): think(): m_strName: teach(): {voidthink();voidwork();boolm_bGender;intm_iAge;

classTeacher:{voidteach();int本次议 新建立的类称为派生类(derivedclass)或子(sonclass)。继承和派生的基本概念 承 次

农民 语文老 中学老 小学 中学 学学学本科本科本科床沙 床沙沙沙发 学家具 学家具本科本科床单人单人 派生类是基类的特化,而基类是派生类的 基类和派生类是相对的(如右图学学本本科本次议 名>{派生类新增加的 class<派生类名>:[继承方式]<基类名1>,[继承方式]<基类名2>,[...{派生类新增加的成派生类 classclassB:public

classclassclassC:publicA,public

有三种继承方式 class类和(默认继承方式取决于class类和struct//不推struct//不推符派生类class classStudent:private{intvoidget()

intvoidget()struct intvoidget()

structStudent:public{intvoidget()#include<iostream>usingstd::cout;classA{intclassB:public{

m_iVal,关于 doubleint{ABcout<<sizeof(a)<<""<<sizeof(b)<<endl;return0;}{voiddisplay()const;boolm_bSex;int

classTeacher:{voiddisplayEx()const;stringm_strAddr;intm_iSalary;}

继+disla派生类#include#includeusingnamespacestd;{(stringaName=“”,boolaSex=true,intaAge=0voiddisplay()const;stringm_strName;boolm_bSex;intclassTeacher:{Teacher(stringaName,boolaSex,intaAge,stringaSpec,intaCredit);voiddisplayEx()const;stringm_strSpeciality;intm_iCredit;

DEMO派生类把基类全部的成员(不包括构造函数和析构函数)接收过来调整基类public和protected成员 权隐藏同名基类成要仔细虑应当增加些成员。在派生类时,一般还应成员从基类继承本类中新成员名及成员属成员属数据(共6个成员(共5个派生类派生类 本次议 继承方式(重点 公有继承 私有继承 符符YNYYNYYNYYNYYYYYYY公公有继承 控 类控类inaccessible成员不能被子类成员函数直接

{intx;inty;intvoiddisplayA(){cout<<x<<y<<z<<

classB:public{intintm;intvoiddisplayB(){cout<<k<<m<<

intmain({Aa;Bb;cout<<b.x<<<<b.z<<endl; <<b.k<<b.m cout<<x<<y<<z<<endl;

对象a

对象b的成 栈区

A::displayA()区

Demo公有继承子类和父类是isa类派生类成保护继承控基类成类派生类成保护继承控基类成

{intx;inty;

classB:protected{intintm;

intmain({Aa;Bb;b.displayB();intvoiddisplayA({cout<<x<<y<<z<<

intvoiddisplayB({cout<<k<<m<<n<<endl;cout<<x<<y<<z<<endl;}

<<b.x<<b.y<<b.z<<<<b.k<<b.m<<<<

对象a的成

对象b 栈区

栈区

,派生类成控基类成派生类成控基类成私私有继承类

{intx;inty;

classB:private{intintm;

intmain({Aa;Bb;b.displayB();intvoiddisplayA({cout<<x<<y<<z<<

intvoiddisplayB({cout<<k<<m<<n<<endl;cout<<x<<y<<z<<endl;}

<<b.x<<b.y<<b.z<<<<b.k<<b.m<<<<

对象a的成

对象b 栈区

栈区

class{class class{class{Enginem_Engine;//.有Engine的成员,相当于包含了以Engine对class{classCar:private{. ④基类的private④基类的private可直 派生类无法直 派生类成派生类类成√×√√××员√××√√√√√×√√××√× 家具床床单单人classclassclassclassclassclass继承方classA的成classclass[注意 class{intclassB:public

间接基class间接基classclassclass 成classclass{intclassC:public{void

b

{cout<<a<<b<<c<<}intc;

本次议 ::位置在派生类中任 属性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论