- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
cpp07-继承与派生
计算机学院 张荣博 办公室:图书馆826 E-mail:zhangrb@syiae.edu.cn 第七章 类的继承与派生 C++中类的产生,来自于人们对现实生活或工作中具体问题的抽象(本质特征和关键行为)。 而不同事物之间往往不是独立存在的,很多事物之间都有着复杂的联系。 继承便是众多联系中的一种:孩子与父母有很多想象的地方,但同时也有不同。 继承与派生问题举例 基本概念 所谓继承就是从先辈类处得到属性和行为特征。 长方体(长宽高)继承了长方形 (长宽) 在已有类的基础上新增自己的特性而产生新类的过程称为派生。 长方形(长宽)派生了长方体(长宽高) 被继承的已有类称为基类(或父类)。 派生出的新类称为派生类(或子类)。 继承与派生的目的 继承的目的:实现代码重用。 派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。 派生类对象结构 继承方式 公有继承(public) 私有继承(private) 基类的public和protected成员都以private身份出现在派生类中。但基类的private成员不可直接访问。 派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。 通过派生类的对象不能直接访问基类中的任何成员。 保护继承(protected) 成员隐藏 int main() { B objB; objB.print(5); objB.print(); objB.A::print(); } 派生类的构造与析构 基类的构造函数不被继承,派生类中需要声明自己的构造函数。 声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化,自动调用基类的默认构造函数完成。 派生类的构造函数需要给基类的构造函数传递参数 派生类构造函数的调用顺序如下:??? · 基类的构造函数??? · 类成员的构造函数(如果有的话)??? · 派生类本身的构造函数 构造析构举例 #includeiostream using namespace std; class C{ int c; public: C(int vc=0){ c=vc; coutC 构造:c= cendl; } ~C(){ coutC 析构:c= cendl; } void print(){ coutC c=cendl; } }; 继承与组合 课堂练习 1.在公有继承的情况下,基类成员在派生类中的访问权限 ( ) A.受限制 B.保持不变 C.受保护 D.不受保护 2、下列对派生类的描述中,错误的是 (???) A.一个派生类可以作为另一个派生类的基类 B.派生类至少有一个基类 C.派生类的缺省继承方式是private D.派生类只继承了基类的公有成员和保护成员 3.在C++中,构造派生类对象时,总是先从____________的初始化开始的。(填写基类或派生类) 4.C++类体系中,不能被派生类继承的有( ) A.转换函数 B.构造函数 C.虚函数 D.静态成员函数 5.继承具有 ,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。 A.规律性 B.传递性 C.重复性 D.多样性 6.若类A和类B的定义如下: class A{ int i,j; public: void get(); //... }; class B:A {//默认为私有派生 int k; public: void make(); //... }; void B::make(){ k=i*j; } 上述定义中, 是非法的表达式。 A.void get(); B.int k; C.void make(); D.k=i*j; 本节作业 class A{ int a; public: A(int va=0){ a=va; coutA 构造:a= aendl; } ~A(){ coutA 析构:a= aendl; } void print(){ coutA a=aendl; } }; class B: public A{ C com; int b; public: B(int,int,int); ~B(){ coutB 析构:b= bendl; } void print(){ A::print(); com.pri
您可能关注的文档
- 2014仁爱英语八年级下册Unit 5 Topic 2 Section D.ppt
- 2014南京青奥会志愿者在线考试试题及答案-Strong.doc
- 2015届高考英语一轮复习讲义.doc
- 20_Workshop10_Conditional_Constructs_and_Loops.ppt
- 2016.5月份公开课课件unit 8 reading.ppt
- 21 User-Managed Incomplete Recovery.ppt
- 23 Recovery Catalog Creation.ppt
- 22 The Human Genome Project and Beyond.ppt
- 24 Hour Clock.ppt
- 3 Speech sound.ppt
文档评论(0)