c 教案三范文_第1页
c 教案三范文_第2页
c 教案三范文_第3页
c 教案三范文_第4页
c 教案三范文_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

c 教案三范文 面向对象程序设计三刘钰峰本章主要内容?类的继承?类成员的访问控制?单继承与多继承?派生类的构造、析构函数?类成员的标识与访问继承?概念VehicleBicycleCar BusTruckAutoship类的继承与派生?保持已有类的特性而构造新类的过程称为继承。 ?在已有类的基础上新增自己的特性而产生新类的过程称为派生。 ?被继承的已有类称为基类(或父类)。 ?派生出的新类称为派生类。 继承与派生的目的?继承的目的实现代码重用。 ?派生的目的当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。 派生类的声明class派生类名继承方式基类名成员声明;继承方式?不同继承方式的影响主要体现在?派生类成员对基类成员的访问权限?通过派生类对象对基类成员的访问权限?三种继承方式?公有继承(public)?私有继承(private)?保护继承(protected)公有继承(public)?基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问。 ?派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。 ?通过派生类的对象只能访问基类的public成员。 公有继承举例class GrandFatherpublic:GrandFather()this-publicVar=0;this-protectedVar=0;this-privateVar=0;void publicfun()coutin GrandFatherpublicfun()成员名17int main()/主函数B0b0;/声明B0类对象B1b1;/声明B1类对象D1d1;/声明D1类对象B0*p;/声明B0类指针p=&b0;/B0类指针指向B0类对象fun(p);p=&b1;/B0类指针指向B1类对象fun(p);p=&d1;/B0类指针指向D1类对象fun(p);运行结果B0:display()B0:display()B0:display()18继承时的构造函数?基类的构造函数不被继承,派生类中需要声明自己的构造函数。 ?声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化,自动调用基类构造函数完成。 ?派生类的构造函数需要给基类的构造函数传递参数单一继承时的构造函数派生类名:派生类名(基类所需的形参,本类成员所需的形参):基类名(参数表)本类成员初始化赋值语句;单一继承时的构造函数举例#includeusing namecpacestd;class Bpublic:B();B(int i);B();void Print()const;private:int b;B:B()b=0;coutBs defaultconstructor called. ?不需要显式地调用基类的析构函数,系统会自动隐式调用。 ?析构函数的调用次序与构造函数相反。 StudentidpMemoPersonnameAddresspCitypStreetGraduateStudentAdvisor1*Extend.cpp继承时的构造顺序及内存布局?父类先于子类构造从Student继承的部分GraduateStudent自己的部分thisGraduateStudent拷贝构造函数?若建立派生类对象时调用默认拷贝构造函数,则编译器将自动调用基类的默认拷贝构造函数。 ?若编写派生类的拷贝构造函数,则需要为基类相应的拷贝构造函数传递参数。 例如:C:C(C&c1):B(c1)同名隐藏规则当派生类与基类中有相同成员时?若未强行指名,则通过派生类对象使用的是派生类中的同名成员。 ?如要通过派生类对象访问基类中被覆盖的同名成员,应使用基类名限定。 基类与派生类的对应关系?单继承?派生类只从一个基类派生。 ?多继承?派生类从多个基类派生。 ?多重派生?由一个基类派生出多个不同的派生类。 ?多层派生?派生类又作为基类,继续派生新的类。 多继承?从多个基类派生的继承称为多继承,即一个派生类可以有多个直接基类。 派生类与每个基类之间的关系仍看作是一个单继承关系,满足单继承的规则。 ?每一个“继承方式”,只用于限制对紧随其后之基类的继承class:,;#includeiostream.hclass Apublic:A()coutin Aconstrutor ?当基类声明有带形参的构造函数时,派生类也应声明带形参的构造函数,并将参数传递给基类构造函数。 多继承且有内嵌对象时的构造函数派生类名:派生类名(基类1形参,基类2形参,.基类n形参,本类形参):基类名1(参数),基类名2(参数),.基类名n(参数),对象数据成员的初始化本类成员初始化赋值语句;构造函数的调用顺序1调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右)。 2调用成员对象的构造函数,调用顺序按照它们在类中声明的顺序。 3派生类的构造函数体中的内容。 多继承同名隐藏举例#includeusing namecpacestd;class B1/声明基类B1public:/外部接口int nV;void fun()coutMember ofB1b=b;int b;class B1:public Bpublic:B1(int b1,int b):B(b)this-b1=b1;int b1;class B2:public Bpublic:B2(int b2,int b):B(b)this-b2=b2;int b2;class C:public B1,public B2public:C(int c,int b1,int b11,int b2,int b22):B1(b1,b11),B2(b2,b22)this-c=c;void f()coutb=b;int b;class B1:virtual public Bpublic:B1(int b1,int b):B(b)this-b1=b1;int b1;class B2:virtual publicBpublic:B2(int b2,int b):B(b)this-b2=b2;int b2;class C:publicB1,publicB2public:C(int c,int b1,int b11,int b2,int b22):B1(b1,b11),B2(b2,b22),B(b11)this-c=c;void f()coutB0nV:intfun()B0B1新增成员B0B2新增成员D1新增成员B0B0B1B2D1nV,fun()49虚基类应用实例Job_Student.cpp编程练习一?建立一个大学简单的管理系统。 在这个大学里有学生、有雇员,其中,雇员中有老师,还有一些雇员拥有老师和学生双重身份

温馨提示

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

评论

0/150

提交评论