欢迎来到天天文库
浏览记录
ID:50320012
大小:92.50 KB
页数:21页
时间:2020-03-08
《C及C++程序设计 教学课件 作者 张富 第十七章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十七章类的继承17.1继承17.2继承机制中的初始化17.3多重继承17.4虚基类17.1继承17.1.1继承与派生类如果要为每一种数据结构都从头定义,无疑会浪费时间。面向对象技术提供了一种机制,使程序设计者能够重用其它类的定义,构成自己的特有的类。在这个新的类中继承了被重用类的特性,又含有自己的特性。这种机制称为继承。从已有的类(基类)派生出一个新类(派生类)的格式是:class类名1,访问控制类名2{privare:成员说明列表protected:成员说明列表public:成员列表说明);其中类名1是派生类名,类名2是基类名。“访问控制”用于规定基
2、类成员在派生类中的访问权限,即基类成员在派生类中是公有的还是私有的。访问控制使用public时,说明基类是派生类的公有成员,称类名1从类名2公有派生,类名2是类名1的公有基类。访问控制使用private时,说明基类是派生类私有成员,称类名1从类名2私有派生,类名2是类名1的私有基类。如果访问控制说明被省略,则隐含为private。无论是公有派生还是私有派生,基类的私有成员在派生类中仍是私有。访问控制只是影响基类的公有成员和保护成员。17.1.2公有派生在公有派生的情况下,基类的所有public成员被继承为派生类的public成员,在派生类之外可以访问它们。基
3、类中被说明为private的成员,派生类的成员函数不能访问它们。基类中的protected成员,在派生类中也是protected成员。这些成员可以供派生类的成员访问,但对其它类和函数则是私有的。例17.1.1从类point(点)公有派生类cercle(圆)首先,定义一个类point,它有两个私有数据成员:点的横坐标x和纵坐标y。四个公有的成员函数,用于操作数据成员x和y。类point的定义如下:classpoint{private:intx;inty;public:voidset_x(intnum);intget_x(void);voidset_y(
4、intnum);intget_y(void);};我们用这个类派生出一个类cercle。其数据成员为圆的半径。因为,圆除了半径还需要一个点作为自己的圆心,而类“point”中已经有了这方面内容,所以,可以把类“point”作为基类,加以继承。于是定义类cercle(圆)如下:classcircle:publicpoint{private:intradius;public:intget_radius(void);voidset_radius(intnum);voidshow(void);};这个例子选用public派生,所以,基类的所有public元
5、素,就好象在point类中说明过一样。然而,派生类中的成员函数不能访问基类的私有部分。如果把类point中的private改为protected,则派生类就能访问它们了。这就是说,protected成员可以被继承。17.1.3私有派生当访问控制选用private时,即私有派生时,基类的所有public成员和protected成员被继承为派生类的private成员。即派生类的成员可以把它们作为自己私有成员来访问。派生类之外不能访问它们。在基类被说明为private的成员,派生类的成员也不能访问它们。即派生类不能继承基类的private成员。基类访问控制派生类对
6、基类的可访问性publicpublicpublicprivatepublic不可访问protectedpublicprotectedpublicprivateprivatedprivateprivate不可访问protextedprivateprivate现将访问控制的作用归纳如表17.1.1。表17.1.117.2继承机制中的初始化由于派生类继承了基类中的数据,这就产生一个问题,如何和何时对基类的数据初始化,派生类如何初始化。上述问题可以通过基类和派生类的构造函数来解决。17.2.1不带参数的基类构造函数17.2.2带参数的基类构造函数当基类的构造函数含有
7、参数时,任何派生类就必须包括构造函数。其原因是,这样就提供了一种把派生类构造函数的参数传递给基类构造函数的途径。为把参数传递给基类,就要在派生类构造函数后面,对这些参数加以说明。其一般形式为:派生类名::派生类构造函数名(参数表):基类构造函数名(参数表){//......//......}这里要注意用冒号“:”把派生类构造函数同基类的参数表分隔开。其作用是将派生类构造函数的参数,传递给基类相应的参数。这里两个构造函数的参数存在着对应关系。17.3多重继承17.3.1多重继承的继承机制所谓多重继承就是一个类继承多个基类的属性。这时,一个派生类将有两个
8、或两个以上的基类。例如,类C以private方式继承
此文档下载收益归作者所有