C++讲义第13章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C讲义第13章

继承与派生的概念 继承是面向对象方法的基本特征之一,是软件重用的一种重要的形式。通过继承机制,可以在已有的类的基础上建立新类。新类既可以继承已有类的属性和行为,也可以修改已有类的属性和行为,或增加新的属性和行为以满足自身特殊的需要。继承可以大大减少定义新类的工作量,并可以重用已经经过调试和测试的高质量的代码(包括自己或别人的代码),减少最终系统出错的可能性。继承是面向对象程序设计的一个非常重要的概念,也是处理复杂软件的一个非常有效的技术。 在C++中,所谓“继承”就是在一个已存在的类的基础上建立一个新的类。已存在的类称为“基类”或“父类”;新建立的类称为“派生类”或“子类”。这样,新产生的类不仅有自己特有的成员数据和成员函数,而且有被继承类的全部成员数据和成员函数。一个基类可以派生出许多个派生类,每一个派生类又可以作为基类再派生出新的派生类,因此基类和派生类是相对而言的。一代一代地派生下去,就形成了类的继承的层次结构。 派生类的定义 单继承派生类的定义格式如下: class 派生类名:[继承方式]基类名 { 派生类新增成员变量和成员函数的定义 }; 其中,继承方式有三种:public(公有)继承、private(私有)继承和protected(保护)继承。上述三种继承方式只能选择一个,如果没有选择,则默认为private(私有)继承。 class Tri { double x, y,z; //表示三角形三边 public: Tri(double, double, double); //构造函数 double Peri(); //求三角形的周长 double Area(); //求三角形的面积 }; 可见,在派生类的类体中,只需要声明新增的成员数据和成员函数即可。 多继承的派生类定义格式如下: class 派生类名:[继承方式1]基类名1, [继承方式2]基类名2, …, [继承方式n]基类名n { 派生类新增成员数据和成员函数的定义 }; 继承方式的解释与单继承一致。 class Stu { int stu_id; //代表学生学号 double score;//代表学生成绩 public: Stu(int , double); //学生类的构造函数 void Show( ); //输出学生的信息 }; 派生类的三种继承方式 派生类中的成员由两部分组成,一部分是从基类继承来的,一部分是派生类新增的。从基类继承来的成员在派生类中的访问权限与其继承方式是密切相关的,并且除了public, protected和private之外,还有一种访问权限称为“不可访问”,即无论何种继承方式,派生类中从基类继承过来的基类的私有成员在派生类中都是不可访问的,也就是说,基类的私有成员在派生类中并没有成为派生类中的私有成员,只有基类的成员函数可以引用它,而不能被派生类的成员函数引用。 公有继承 当派生类以公有(public)方式继承基类时,基类的公有成员和保护成员在派生类中的访问权限不变,仍为公有成员和保护成员;而基类的私有成员则如前所述,在派生类中的访问权限成为“不可访问”。 class A { int x; //私有 protected: int y; //保护 public: int z; //公有 A(int a, int b,int c) { x=a; y=b; z=c; } void ShowA(){ coutx\ty\tzendl;} }; class B:public A //公有继承 { int t; //私有 public: B(int a, int b, int c, int d):A(a,b,c) { t=d; } void ShowB() {couttendl; } }; void main() { B ob(1,2,3,4); //定义派生类对象 ob.ShowA(); //调用派生类中继承基类的公有成员函数 ob.ShowB(); //调用派生类中新定义的公有成员函数 } 私有继承 当派生类以私有(private)方式继承基类时,基类的公有成员和保护成员在派生类中的访问权限全部成为私有成员;而基类的私有成员在派生类中的访问权限仍为“不可访问”。当定义派生类时省略基类的继承方式时,默认的继承方式是私有(private)继承。 保护继承 当派生类以保护(protected)方式继承基类时,基类的公有成员和保护成员在派生类中的访问权限全部成为保护成员;而基类的私有成员在派生类中的访问权限仍为“不可访问”。 保护(protected)继承是一种带有“血缘”关系的继承形式,可以相象,基类无论经过多少次“

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档