派生和继承

1,派生类:

1,单继承的定义格式:

class 派生类名:继承方式 基类名

           {派生类新定义成员;  };

2,多继承的定义格式:

           class 派生类名:继承方式1 基类名1,继承方式2 基类名2,…

            { 派生类新定义成员;  }

3,类成员访问权限:

成员访问权限类自身派生类关联类
public可访问可访问可访问
protected可访问可访问不可访问
private可访问不可访问不可访问

 

 

2,继承方式:

基类成员访问权限继承方式在派生类中的访问权限
publicpublicpublic
protectedprotected
private不可访问
publicprotectedprotected
protectedprotected
private不可访问
publicprivateprivate
protectedprivate
private不可访问

 

 

  3,派生类继承成员的调整:

1,恢复访问权限:当继承方式为 private protected 时,可采用下述格式恢复到原来的访问权限.

      基类名::成员名;    //成员函数名后不要加上()

2,继承成员的重定义:

            1),函数重载: 在派生类中增加了一个与基类成员函数同名的成员函数,但函数形参个数,类型或次序不同,

             2),对继承函数的重定义: 在派生类中增加了一个函数原型与继承成员函数一模一样的成员函数.

3,继承成员的重命名: 在派生类中增加一个新名字命名的成员函数,该成员函数调用旧名字的函数.(解决名字冲突或选择更适合的术语来命名)

 

4,派生类的构造函数和析构函数:

1,构造函数格式:

         派生类名::派生类名(参数表):基类名1(参数表1),...,基类名n(参数表n),子对象1(子对象参数),…,子对象m(子对象参数m)

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

2,如果派生类的构造函数省略对基类构造函数的调用,则会调用基类默认的构造函数进行初始化.

3,构造函数执行顺序:

         1),先按在派生类声明时列出的次序,从左到右调用基类的构造函数.

          2),再按类声明中对象成员出现的次序调用对象成员(子对象)的构造函数.

          3),最后执行派生类的构造函数.

4,析构函数调用顺序与构造函数顺序相反.

 

5,基类对象和派生类对象的使用关系:

1,派生类对象能作为基类对象处理.

2,向上映射转换:

          dynamic_cast<类型>(表达式);

3,派生类指针强制转换为基类指针格式:

           派生类对象指针=static_cast<派生类 *>(&基类对象);

 

6,类层次的类模板:

1,从模板类派生类模板

2,从非模板类派生类模板

3,从类模板派生非模板类

 

7,虚基类:

1,解决重复继承的二义性问题:

            1),使用作用域分辨符来唯一标示并分别访问它们.(同一变量名相互区分,并不相连)

             2),将直接基类的共同基类设置为虚基类.

2,作用域分辨符语法格式:  

             对象名.基类名::成员名;     //数据成员

              对象名.基类名::成员名(参数表);               //成员函数

3,虚基类声明格式: virtual 继承方式 基类名;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值