类的继承与派生

来源:互联网 发布:必佳软件 编辑:程序博客网 时间:2024/04/28 09:12

一、            派生类生成过程

1.吸收基类成员。

2.改造基类成员。

3.扩充基类成员。

在类的派生中,构造函数和析构函数不能被派生。

派生类继承了基类的全部数据成员和除了构造,析构之外的全部函数、成员。

二、            类的继承方式有共有继承、保护继承、私有继承三种

1.公有继承。 基类的公有和保护成员的访问属性在派生类中不变,而基类的私有数据成员在派生类中不可访问。

2.私有继承。基类的公有保护成员以私有成员的身份出现在派生类中,而基类的私有成员不可访问。如果进一步派生的话,基类的全部成员就无法在新的派生类中被访问。实际上,相当于终止了基类功能的继续派生。

3.保护继承。基类的公有成员和保护成员以保护成员的身份出现在派生类中,而基类的私有成员不可访问。

三、            派生类的构造函数

构造派生类的对象时,就要对基类数据成员、新增数据成员和成员对象的数

据成员进行初始化。基类的构造函数并没有继承下来,因此,派生类的构造函数需要以合适的初始值作为参数,隐含调用基类和新增的内嵌对象成员的构造函数,来初始化它们各自的数据成员,然后再加入新的语句对新增普通数据成员进行初始化。

       派生类构造函数的一般语法形式为:

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

{

              派生类新增成员的初始化语句

}

注意:

1.基类名、对象名之间的次序无关紧要,它们各自出现的顺序可以是任意的。

2.对于使用默认构造函数的基类或对象,不需要写出类名(对象名)和参数表。

派生类构造函数的执行次序一般为:

1.调用基类的构造函数,按照它们被继承时声明的顺序。

2.调用内嵌成员对象的构造函数,按照它们的声明顺序。

3.派生类构造函数体中的内容。

四、            虚基类

当类的部分或全部直接基类是从另一个共同基类派生而来的,在这些基类中

从上一级共同基类继承来的成员就拥有相同的名称。在派生类的的对象中,这些同名数据成员在内存中同时拥有多个拷贝,同一个函数名会有多个映射。我们可以用作用域分辨符来唯一标识并分别访问它们,也可以将共同基类设置为虚基类,这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。

例如:类B0是类B1B2的共同基类,类D由类B1B2共同派生而来。则应如下定义:

              Class B1: virtual public B0{…};

              Class B2: virtual public B0{…};

           Class D: public B1, public B2 { … };

五、            赋值兼容规则

指在需要基类对象的任何地方都可以使用派生类的对象来替代,包括以下三

种情况:

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

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

3.派生类对象的地址可以赋给指向基类对象的指针。

在替代之后,派生类对象就可以作为基类的对象使用,但只能使用从基类继

承的成员。

 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝3岁内八字怎么办 一岁半宝宝走路内八字怎么办 一岁宝宝走路内八字怎么办 宝宝1岁了内八字怎么办 宝宝学走路内八字怎么办 人胖走路磨腿怎么办 2岁半宝宝内八字怎么办 大狗跑步累倒怎么办? 拉小提琴的姿势不正确怎么办 屁股摔倒了很痛怎么办 腿摔倒了破了怎么办 骑车摔倒腿肿了怎么办 鸟翅膀老是掉着怎么办 有老人摔倒被讹怎么办 剑鞘囊肿手术后黏连怎么办 上古卷轴5变脏了怎么办 上古卷轴5病了怎么办 法院判的罚金没钱交怎么办 上古卷轴5亲吻出题怎么办 老滚5马不见了怎么办 上古卷轴5杀鸡了怎么办 上古卷轴5东西太多怎么办 上古卷轴天际杀鸡了怎么办 上古卷轴5偷东西被发现怎么办 上古卷轴杀了鸡怎么办 老滚5东西多了怎么办 上古卷轴5被追杀怎么办 全险车自己碰了怎么办 上古卷轴5狗死了怎么办 头发被胶粘住了怎么办 头发被口香糖粘住了怎么办 上古卷轴5杀了npc怎么办 上古卷轴5血太少了怎么办 因牙齿缺失导致变长怎么办 上古卷轴5闪退怎么办? 小米手机4卡顿怎么办 上古卷轴5任务失败怎么办 上古卷轴5爆显存怎么办 老滚5卡住了怎么办 上古卷轴5被木河镇人追杀怎么办 关门的时候有响怎么办