第6章 继承派生.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文档。上传文档
查看更多
第6章 继承派生

6.1 继承与派生的概念 6.1.1 继承 6.2 基类和派生类 6.2.1 派生类的定义 C++中定义派生类的语法格式如下: 【例6-1】圆Circle类继承点Point类。 #include iostream.h class Point { float x,y; public: Point(float a=0,float b=0){x=a;y=b;} void SetP(float a=0,float b=0){x=a;y=b;} void Display() {cout位置是:(x,y)\n;} }; class Circle: public Point { float r; public: Circle(float z=1,float x=0,float y=0){r=z;} void SetC(float z=1,float x=0,float y=0){r=z;SetP(x,y);} void Print() { cout圆的; Display(); cout圆的半径是:rendl; } }; 6.2.2 三种继承方式 6.3单继承 6.3.1 继承成员的访问权限 1.公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类成员时,它们都保持原有的状态,而私有成员是不能被继承的。 2.私有继承(private) 私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,所以派生类的其他成员可以访问它们,但是在类外部通过派生类对象无法访问它们 3.保护继承(protected) 保护继承的特点是基类的公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友员访问。 派生类的构造函数执行顺序如下: (1) 按被继承时说明顺序,调用基类的构造函数。 (2) 调用派生类构造函数体中的内容。 2.析构函数 当对象被删除时,派生类的析构函数被执行。由于析构函数也不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。 执行顺序是: #include iostream.h class A { public: A( ) { cout A Constructor endl;} ~A( ) { cout A Destructor endl;} }; class B : public A { public: B( ) { cout B Constructor endl;} ~B( ) { cout B Destructor endl;} }; void main( ) { B b; cout“其它执行语句。” endl; } 6.4多继承 6.4.1多继承的概念 多继承可以看作是单继承的扩展。所谓多继承是指派生类具有多个基类,派生类与每个基类之间的关系仍可看作是一个单继承。多继承机制如图6-5所示。 多继承派生类的语法格式如下 #includeiostream.h class Base1 { int b1; public: void setB1(int i){ b1=i; } void showB1(){ cout\nb1=b1; } }; class Base2 { int b2; public: void setB2(int i){ b2=i; } void showB2(){cout\nb2=b2; } }; class Derived : public Base1, private Base2 //定义多基派生类Derived { int d; public: void setD(int i, int j) {d=i; setB2(j); } void showD(){ showB2(); cout\nd =d;} }; 6.4.2多继承的构造函数 多继承的情况下,派生类的构造函数格式如下: ① 先基类,后自己。即先执行基的构造函数,再执行派生类本身构造函数。 ② 在同一层上的各基类构造函数,按派生时定义的先后次序执行。 6.5 虚基类 6.5.1 作用域分辨符 作用域分辨符就是我们经常见到的“::”,它可以用来限制访问的成员所在的类的名称。 一般语法格式如下: 6.5.2 虚基类说明 虚基类在定义由基类直接派生的类时说明。说明格式如下: 6.5.3 虚基类的构造函数 虚基类的初始化与一般的多继承的初始化在语法上是一样的,但构造函数的调用次序不同。 派生类构造函数调用的次序有以下原则: 习题六 1.派生类和基类是什么关系

文档评论(0)

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

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

1亿VIP精品文档

相关文档