c++学习已经有一段时间了,但是在这段时间中用到继承方面的知识并不多,自己本来搞得就不是很清楚,现在回头看了一下继承与派生,总结如下:
1.首先,类与对象的关系恰当反映了个体与同类群体共同特征之间的关系。继承是众多关系中的一种,例如:汽车与自行车从属于一个抽象的概念-----交通工具。
2.类的派生机制有什么好处呢? 好处在与代码的重用性和扩充性。
下面进入主题:
1.1派生类的定义
派生类的语法定义:
class 派生类名 :继承方式 基类名1,继承方式 基类名2,继承方式 基类名3。。。继承方式 基类名n
{
派生类成员声明
};//这个分号是开始写程序时经常会被忽视的,现在还好。。
Note:
1.一个派生类可以同时有多个基类,这种情况叫做多继承。依次可以推断出,有一个基类时叫做单继承。
2.继承方式规定了如何访问从基类继承的成员。包括:private,protected,public三种。如果不显式给出继承方式关键字,系统默认为私有继承。
1.2 派生类生成过程
1.吸收基类成员 :派生类继承了除基类构造函数和析构函数之外的所有成员
2.改造基类成员
3.添加新成员:是继承与派生机制的核心
2.访问控制问题
公有继承:当类的继承方式为公有继承时,基类的公有成员和保护成员的访问权限不变,基类的私有成员不可访问。
保护继承:基类的公有成员和保护成员变为保护,基类的私有成员不可访问。
私有继承:基类的公有成员和保护成员变为私有,基类的私有成员不可访问。
Note:private和protected的区别在当派生类作为基类时得到体现。
3.类型兼容性规则
类型兼容性规则是指在需要基类对象的任何地方,都可以用公有派生类的对象来替代。
替代包括以下几方面:
派生类的对象可以赋值给基类对象
派生类对象可以初始化基类的引用
派生类对象的地址可以赋值给基类的指针
4.派生类的构造和析构
构造函数:
从基类继承的成员的初始化工作需要基类的构造函数完成,而新增的需要由派生类构造。
派生类的参数包括两部分,一部分是用于新增成员的初始化,另一部分用于传递给基类初始化其成员。
基本格式如下:
派生类名::派生类名(总参表):基类1 (参数表1)。。。基类名n(参数表n),内嵌对象名1(参数1)。。。内嵌对象名n(参数表n)
{
新增成员的初员初始化
}
析构函数:
执行次序与构造函数正好相反,先对派生类的普通成员进行清理
虚基类
当某类的部分或全部直接从另一个直接基类派生而来,在这些直接基类中从上一级共同继承而来的成员就拥有相同的名称。这时从不同路径继承下来的同名成员数据就会拥有多个拷贝,虚基类用来解决这个问题。