C++的继承与派生

1、派生类的声明方式:

(1)    一般形式:class 派生类名:[继承方式]基类名

{派生类新增加的成员};

2)继承方式包括: public (公用的),private (私有的)protected(受保护的),此项

是可选的,如果不写此项,则默认为private(私有的)

1>公用继承(public inheritance)

基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍

为基类私有。

2>私有继承(private inheritance)

基类的公用成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有。

3>受保护的继承(protected inheritance)

基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基

类私有

2、派生类的构造函数和析构函数

(1)    简单的派生类的构造函数

一般形式:派生类构造函数名(总参数表列):基类构造函数名(参数表列)

{派生类中新增数据成员初始化语句}

如:①Student1(int n,string nam,char s,int a,string ad):Student(n,nam,s)

//派生类构造函数

//在函数体中只对派生类新增的数据成员初始化

{

age=a;

addr=ad;

}

Student1(int n, string nam,char s,int a, stringad)

:Student(n,nam,s),age(a),addr(ad){}

(2)    有子对象的派生类的构造函数

一般形式:

派生类构造函数名(总参数表列):基类构造函数名(参数表列),子对象名(参数表列){派生类中新增数成员据成员初始化语句}

(3)    多层派生时的构造函数

   只需列出其上一层派生类的构造函数

(4)    多重继承派生类的构造函数

一般形式:

派生类构造函数名(总参数表列):基类1构造函数(参数表列),基类2构造函数(参数表列),基类3构造函数(参数表列)

{派生类中新增数成员据成员初始化语句}

3、虚基类(利用虚基类解决多重继承引起的二义性问题)

(1)    一般形式:class 派生类名: virtual  继承方式基类名

(2)    初始化:如:

      class A//定义基类A

{A(int i){ }}; //基类构造函数,有一个参数};

class B :virtual public A //A作为B的虚基类

{B(int n):A(n){ }}; //B类构造函数,在初始化表中对虚基类初始化};

class C :virtual public A //A作为C的虚基类

{C(int n):A(n){ }}; //C类构造函数,在初始化表中对虚基类初始化};

class D :public B,public C

{D(int n):A(n),B(n),C(n){ }}; //D的构造函数,在初始化表中对所有基类初始化

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值