C++中的继承(一)

来源:互联网 发布:秦始皇活着吗 知乎 编辑:程序博客网 时间:2024/05/16 05:09


继承(inheritance)机制

        是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构。体现了由简单到复杂的认识过程。


 思想:

        从现有的类继承属性和行为,然后增加属性和行为定制类以满足我们的实际要求,创建派生类不会英系那个基类的源代码,基类的完整性可以得到保证

由基类派生出派生类的定义的一般形式为

class 派生类名:访问限定符  基类名1《,访问限定符 
    基类名2,……,访问限定符  基类名n》

{
      private: 
             成员表1;》 //派生类增加或替代的私有成员
      public:
             成员表2;》 //派生类增加或替代的公有成员
     protected:
             成员表3;》 //派生类增加或替代的保护成员
};//分号不可少

其中基类1,基类2,……是已声明的类。 在派生类定义的类体中给出的成员称为派生类成员,它们是新增加成员,它们给派生类添加了不同于基类的新的属性和功能。派生类成员也包括取代基类成员的更新成员


派生类的构造函数的定义形式为:

派生类名::派生类名(参数总表):基类名1(参数表1)《,基类名2(参数表2),……,基类名n(参数表n)》,《成员对象名1(成员对象参数表1),……,成员对象名m(成员对象参数表m)》{
……//派生类新增成员的初始化;
} //所列出的成员对象名全部为新增成员对象的名字

在构造函数的声明中,冒号及冒号以后部分必须略去。
    所谓不能继承并不是不能利用,而是把基类的构造函数作为新的构造函数的一部分,或者讲调用基类的构造函数。
    冒号后的基类名,成员对象名的次序可以随意,这里的次序与调用次序无关





派生类构造函数各部分的执行次序为:
1.调用基类构造函数,按它们在派生类定义的先后顺序,顺序调用。
2.调用成员对象的构造函数,按它们在类定义中声明的先后顺序,顺序调用。
3.派生类的构造函数体中的操作。


在派生类构造函数中,只要基类不是使用缺省构造函数都要显式给出基类名和参数表。
如果基类没有定义构造函数,则派生类也可以不定义,全部采用系统给定的缺省构造函数。
如果基类定义了带有形参表的构造函数时,派生类就应当定义构造函数。

析构函数各部分执行次序与构造函数相反,首先对派生类新增一般成员析构,然后对新增对象成员析构,最后对基类成员析构。









0 0
原创粉丝点击