有了继承,使软件的重用成为可能。继承是C++和C的最重要的区别之一。
由于C++提供了继承的机制,这就吸引了许多厂商开发各类实用的类库。用户将它们作为基类去建立适合于自己的类(即派生类),并在此基础上设计自己的应用程序。
类库的出现使得软件的重用更加方便,现在有一些类库是随着C++编译系统卖给用户的。读者不要认为类库是C++编译系统的一部分。不同的C++编译系统提供的由不同厂商开发的类库一般是不同的。
对类库中类的声明一般放在头文件中,类的实现(函数的定义部分)是单独编译的,以目标代码形式存放在系统某一目录下。
用户使用类库时,不需要了解源代码,但必须知道头文件的使用方法和怎样去连接这些目标代码(在哪个子目录下),以便源程序在编译后与之连接。
由于基类是单独编译的,在程序编译时只需对派生类新增的功能进行编译,这就大大提高了调试程序的效率。
如果在必要时修改了基类,只要基类的公用接口不变,派生类不必修改,但基类需要重新编译,派生类也必须重新编译,否则不起作用。
人们为什么这么看重继承,要求在软件开发中使用继承机制,尽可能地通过继承建立一批新的类?为什么不是将已有的类加以修改,使之满足自己应用的要求呢?
1.有许多基类是被程序的其他部分或其他程序使用的,这些程序要求保留原有的基类不受破坏。
2.用户往往得不到基类的源代码。
3.在类库中,一个基类可能已被指定与用户所需的多种组件建立了某种关系,因此在类库中的基类是不容许修改的。
4.实际上,许多基类并不是从已有的其他程序中选取来的,而是专门作为基类设计的。
5.在面向对象程序设计中,需要设计类的层次结构,从最初的抽象类出发,每一层派生类的建立都逐步地向着目标的具体实现前进。