c++学习资料第 07 章 继承.pdf

c++学习资料第 07 章 继承.pdf

ID:48025045

大小:323.27 KB

页数:23页

时间:2020-01-26

c++学习资料第 07 章 继承.pdf_第1页
c++学习资料第 07 章 继承.pdf_第2页
c++学习资料第 07 章 继承.pdf_第3页
c++学习资料第 07 章 继承.pdf_第4页
c++学习资料第 07 章 继承.pdf_第5页
资源描述:

《c++学习资料第 07 章 继承.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第7 章继承 ·继承是面向对象程序设计实现软件重用的重要方法。程序员可以在已有类的基础上定义新的数据成员和成员函数。原有类称为基类,新的类称为派生类,这种程序设计方法称为继承。一个操作的特殊实现,用继承方法增加新的类,不会影响原有的类层次结构。派生类成员由基类成员和自身定义的成员组成。 ·单继承的派生类只有一个基类。多继承的派生类有多个基类。 ·类成员的访问特性和类的继承性质决定类成员的作用域和可见性。类的公有成员称为接口,可以在类外访问。派生类不能访问基类的私有(private)成员,但可以访问基类的公有(public

2、)和保护(protected)成员。对基类成员的访问性质还受继承方式影响。公有(public)继承方式,基类的 public和 protected成员在派生类中性质不变;保护(protected)继承,基类的public和protected 成员都成为派生类的protected 成员;私有(private)继承,基类的public和protected成员都成为派生类的 private成员。派生类中不可见基类的私有数据成员,但这些数据存储单元依然被建立。创建派生类对象时,派生类的构造函数总是先调用基类构造函数来初始化派生类

3、中的基类成员。调用基类构造函数可以通过初始化列表实现数据成员的初始化。调用析构函数的次序和调用构造函数的次序相反。 ·类继承关系中,覆盖成员出现访问的二义性,可以用作用域符显示指定类成员。 ·为了避免多继承类格中的汇点类在派生类对象中产生不同副本,C++提供虚继承机制。多继承提供了软件重用的强大功能,也增加了程序的复杂性。7.1类之间的关系面向对象技术中,类是数据和操作的集合,它们之间有三种主要关系:hasA,usesA和 isA。hasA表示类的包含关系,用类成员表示。usesA表示一个类部分地使用另一个类,通过类之间

4、成员函数的相互联系,定义友员或对象参数传递实现。isA表示一种分类方式,描述类的抽象和层次关系,用实继承机制现。例如,植物分类如图 7.1 所示。图7.1 植物分类系统7.2 基类和派生类C++中,描述类继承关系的语法形式是:class 派生类名: 基类名表{ 数据成员和成员函数说明第1 页共23 页(西昌学院信息技术系韩德)第7 章继承};其中"基类名表"由以下语法形式构成:访问控制基类名1,访问控制基类名2,… ,访问控制基类名n"访问控制"是表示继承权限的关键字,称为访问描述符:public公有继承private 

5、私有继承protected 保护继承7.2.1 访问控制一个派生类公有继承一个基类时,基类中所有公有成员成为派生类的公有(public)成员;基类中所有保护成员成为派生类的保护(protected)成员。一个派生类私有继承一个基类时,基类中所有公有成员和保护成员同时成为派生类的私有(private)成员。一个派生类保护继承一个基类时,基类中所有公有成员和保护成员同时成为派生类的保护(protected)成员。不论派生类以何种方式继承基类,都不能直接使用基类的私有(private)成员。图7.2 表示了不同继承方式派生类成

6、员的访问特性。图7.2 不同继承方式派生类成员的访问特性1.公有继承以公有方式继承的派生类,基类的 public和 protected成员在派生类中的性质不变。【例 71】公有继承的测试。#include class A第2 页共23 页(西昌学院信息技术系韩德)第7 章继承{ public : void get_XY(){ cout << "Enter twonumbers ofx, y : " ;cin >> x >> y ;}void put_XY(){ cout << "x = "<

7、<< ", y = " << y << '' ; }protected:int x,y ; };class B : publicA { public : int get_S() { return s ; }voidmake_S() { s = x * y; } //使用基类数据成员x,y protected:int s;};class C : public B{ public : void get_H(){ cout << "Enter a number ofh : " ; cin >> h ; }int get_V

8、() { returnv ; };voidmake_V(){ make_S(); v = get_S() *h ; } //使用基类成员函数protected:int h, v;};voidmain(){ A objA ; BobjB ; CobjC ; cout <<"It is object_A :" ; o

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。