c++学习已经有一段时间了,但是在这段时间中用到继承方面的知识并不多,自己本来搞得就不是很清楚,现在回头看了一下继承与派生,总结如下:

1.首先,类与对象的关系恰当反映了个体与同类群体共同特征之间的关系。继承是众多关系中的一种,例如:汽车与自行车从属于一个抽象的概念-----交通工具。

2.类的派生机制有什么好处呢?     好处在与代码的重用性和扩充性。

下面进入主题:

1.1派生类的定义

       派生类的语法定义:

                                class 派生类名 :继承方式 基类名1,继承方式 基类名2,继承方式 基类名3。。。继承方式 基类名n

                          {

                                         派生类成员声明

这个分号是开始写程序时经常会被忽视的,现在还好。。

    

                1.一个派生类可以同时有多个基类,这种情况叫做多继承。依次可以推断出,有一个基类时叫做单继承。

                 2.继承方式规定了如何访问从基类继承的成员。包括:private,protected,public三种。如果不显式给出继承方式关键字,系统默认为私有继承。

1.2 派生类生成过程

                          1.吸收基类成员   :派生类继承了除基类构造函数和析构函数之外的所有成员

                           2.改造基类成员 

                          3.添加新成员:是继承与派生机制的核心

2.访问控制问题

公有继承:当类的继承方式为公有继承时,基类的公有成员和保护成员的访问权限不变,基类的私有成员不可访问。

保护继承:基类的公有成员和保护成员变为保护,基类的私有成员不可访问。

私有继承:基类的公有成员和保护成员变为私有,基类的私有成员不可访问。

 

Note:private和protected的区别在当派生类作为基类时得到体现。

 

3.类型兼容性规则

类型兼容性规则是指在需要基类对象的任何地方,都可以用公有派生类的对象来替代。

替代包括以下几方面:

派生类的对象可以赋值给基类对象

派生类对象可以初始化基类的引用

派生类对象的地址可以赋值给基类的指针

 

4.派生类的构造和析构

构造函数:

从基类继承的成员的初始化工作需要基类的构造函数完成,而新增的需要由派生类构造。

派生类的参数包括两部分,一部分是用于新增成员的初始化,另一部分用于传递给基类初始化其成员。

基本格式如下:

派生类名::派生类名(总参表):基类1 (参数表1)。。。基类名n(参数表n),内嵌对象名1(参数1)。。。内嵌对象名n(参数表n)

{

新增成员的初员初始化

}

析构函数:

执行次序与构造函数正好相反,先对派生类的普通成员进行清理

 

虚基类

当某类的部分或全部直接从另一个直接基类派生而来,在这些直接基类中从上一级共同继承而来的成员就拥有相同的名称。这时从不同路径继承下来的同名成员数据就会拥有多个拷贝,虚基类用来解决这个问题。