预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共67页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第5章派生类5.1.1为什么要使用继承 在最简单的情况下,一个类B继承类A或者从类A派生类B,通常将类A称为基类,类B称为派生类。 这时,类B的对象具有类A对象的所有特性,甚至还会更多一些。 也可以这样说,类B从类A派生出来。这意味着类B至少描述了与类A同样的接口,至少包含了同类A一样的数据,可以共享类A的成员函数。类B继承了类A,那么类A的公有段成员可以传递给派生类B,当作类B自己的成员。 在创建派生类对象时,先要调用基类的构造函数,以便分配基类的公有段程序存储空间。 实际上,由于调用了构造函数,一个派生类对象包含有一个基类对象,只是对于派生类而言,不能访问基类的私有段成员。#include<iostream.h> classA {intpri; public: intpub; voidset_pri(inta) {pri=a;} voidset_pub(inta) {pub=a;} voidout_pri(){cout<<pri<<“”;} };pri1例5-2描述串的类 classstring {intlength; char*contents; public: string(){length=0;contents=0;} ~string(); intget_length() {returnlength;} char*get_contents() {returncontents;} voidset_contents(intin_length,char*in_contents); voidset_contents(char*in_contents); };classedit_string:publicstring {private: intcursor; public: intget_cursor_pos(){returncursor;} voidmove_cursor(inthow_much); intadd_at_cursor(string*new_text); intreplace_at_cursor(string*new_text); intdelete_at_cursor(inthow_much); }; voidmain() {strings1; edit_strings2; char*cp; s1.set_contents(8,“getthis”); cp=s1.get_contents(); s2.set_contents(8,cp); s2.move_cursor(4); s1.set_contents(7,“wombats”); s2.replace_at_cursor(&s1);… }C++语言允许派生类可以重新定义基类的成员。如果派生类定义了与基类同名的成员,称派生类的成员覆盖了基类的同名成员。 如果要在派生类中使用基类的同名成员,可以显式的使用下述类名限定符: 类名::成员 此外可以,用下面的方法访问全局变量: ::成员一个派生类从外部看,非常类似一个基类,但内部则有不同。 特别是,一个派生类没有权力访问它的基类的私有数据,就像其他任何类一样。 例如,edit_string类不能直接访问string类的contents域或length域。如果edit_string类的成员函数要使用contents,必须调用get_contents()来得到它。 一个类的私有成员对其他类不可以访问的原因是确保没有其他类的成员函数依赖它们。这就允许软件适应未来的改变,赋予面向对象方法以更大的能力。当从现成的类派生出新类时,派生类有以下功能: 1)增加新的数据成员。 2)增加新的成员函数。 3)重新定义数据成员。 4)重新定义成员函数。5.1.2保护段基类是否存在这样一类成员?它们可以被派生类访问,但不能被其他类访问。除了基类和它的派生类可以看到这部分成员外,对其他类如同私有段成员一样。 重新定义为:class类名 {private: ……… protected: ……… public: ……… };5.1.3基类的访问描述符<access>为private,称为私有派生,基类的所有公有段成员和保护段成员都成为派生类私有段的成员。1.公有派生 在公有派生情况下,基类保护成员和公有成员的访问全限在派生类中保持不变。即: 1)基类的保护成员在派生类中仍然是保护成员。 2)基类的公有成员在派生类中仍然是公有成员。 3)基类的私有成员在派生类中成为派生类的不可访问成员。 一个类的不可访问成员是指该类包含有这些成员,但在类内和类外,都不能被直接访问。因此,对于一个派生类A,类的成员有四种:私有成员,保护成员,公有成员和不可访问成员。如果该派生类还以公有方式继续派生出它的派生类B,那么 1)A类的保护成员在派生类