- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11 继 承
前面介绍面向对象程序设计时提到,封装、继承和多态是面向对象程序设计方法的三个特征。而继承是指一个类除了得到另外一个类的所有性质外,还具有自身独特的性质。则该类称为派生类,而另外一个类称为基类,这种行为称为继承。 例如,在现实生活中,人是一个类,动物也是一个类,而人这个类具有动物这个类的所有特征,此外,还具有其他动物所没有的独特性质,如说话、直立行走等。因此,在该关系中,人是派生类,动物是基类,人这个类继承于动物。 继承是面向对象的一个重要特征,根据派生类所拥有的基类数目不同,可以分为单继承和多继承。 声明派生类 派生类定义的一般形式是: class 派生类名:派生方式基类名 { 派生类成员声明; } 其中,参数说明如下: 继承方式关键字为private、public和protected,分别表示私有继承、公有继承和保护继承。默认的继承方式是私有继承。继承方式规定了派生类成员和类外对象访问基类成员的权限,将在后面章节介绍。 派生类成员是指除了从基类继承来的成员外,新增加的数据成员和成员函数。正是通过在派生类中新增加成员来添加新的属性和功能,来实现代码的复用和功能的扩充。 声明多重继承 C++中,多重继承声明的一般形式为: class 派生类名:派生方式1基类名1,┅,派生方式n基类名n { 派生类成员声明; } 其中,冒号后面的部分称为基类表,它们之间用逗号分开。派生方式规定了派生类以何种方式继承基类成员,仍为private、protected和public三类。 虚基类 引入需基类的主要原因是为了解决基类中由于同名成员的问题而产生的二义性问题。 定义虚基类 虚基类的声明是在派生类的声明过程中进行的,其声明的一般形式为: class派生类名:virtual派生方式基类名 虚基类关键字的作用范围和派生方式与一般派生类的声明一样,只对紧跟其后的基类起作用。声明了虚基类以后,虚基类的成员在进一步派生过程中和派生类一起维护同一个内存拷贝。 注意:虚基类的定义只需要在基类的声明中,在继承方式前添加virtual关键字即可,编译系统将自动消除二义性。 本章主要介绍了C++面向对象程序设计的一个重要特征——继承的概念和使用。本章一开始就开门见山地介绍了继承和派生的概念,接着详细讲解了C++中的三种继承:公有继承、私有继承和保护继承。这三种不同的继承方式,其派生出来的派生类的成员属性也是不同的,因此,对其不同成员的访问控制机制本章也做了详细的讲解。类的一个重要特征是构造函数和析构函数,针对派生类也是如此,本章通过具体的范例讲解了派生类的构造函数、析构函数及其执行顺序。此外,本章对多重继承、虚基类都做了较为详细的讲解。 习题 3.分析以下程序的执行结果。 #includeiostream.h class base { public: base(){coutconstructing base classendl;} ~base(){coutdestructing base classendl; } }; class subs:public base { public: subs(){coutconstructing sub classendl;} ~subs(){coutdestructing sub classendl;} }; int main() { subs s; } 4 。分析以下程序的执行结果。 #includeiostream.h class A { public: int n; }; class B:virtual public A{}; class C:virtual public A{}; class D:public B,public C { int getn(){return B::n;} }; void main() { D d; d.B::n=10; d.C::n=20; coutd.B::n,d.C::nendl; } 1-* 第11章 继 承 杨章伟 e-mail:yang505412@163.com 课程内容安排 继承与派生 访问控制 派生类的构造函数和析构函数 多重继承 虚基类 小结 习题 继承与派生 继承是面向对象程序设计的重要特性之一。C++作为一种面向对象程序设计语言,提供了丰富的继承功能。类的继承是新的类从已有类那里得到已有的特性,也即从已有的类产生新类的过程就是类的派生。在继承过程中,原有的类或已经存在的用来派生新类的类称为基类或父类,而由已经存在的类派生出的新类则称为派生类或子类。 继承是面向对象的一块基石,其允许创建分等级层次的类。利用继承可以创建一个通用的类,
文档评论(0)