C++继承与派生

1.什么是继承

    C++类中包含了若干个数据成员和成员函数,在不同的类中数据成员和成员函数是不相同的,但有时俩个类的内容基本相同或有一部分相同。

  例如:“公马”继承了“马”的全部特性,加上“雄性”的特性。“白公马”继承了“公马”的全部属性。所以继承是已存在类的基础上建立一个新的类。“马”为“基类”或“父类”,而新建立的类为“派生类”或“子类”

   继承的定义格式:class student1(派生类即子类):acess-label(继承类型public,protected,private) BaseClassName(基类即父类)

 

 

2.派生类的继承方式


 

   Public:公有继承   private:私有继承  protected:保护继承  如果不写继承方式则默认为prrivate

     派生类成员的访问属性

1)公有继承public:基类的public和protected在派生类中保持原有的访问属性,但私有成员为基类私有。

2)私有继承private:基类的public和protected在派生类中成了私有成员。其私有成员依然为基类私有

3)保护继承protected:基类的public和protected在派生类中成了保护成员,但私有成员仍未基类私有

 保护成员:不能被外界引用,但可以被派生类成员引用。

 **使用关键字class时默认的继承方式是private,使用struct时默认的继承方式是public,不过最好显示的写出继承方式。

 

 

3.派生类的默认成员函数

派生类构造函数一般形式为:Student1(int n,string nam,char s,int a,string ad):Student (n,nam,s)

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

 

  继承关系中构造函数的调用过程:先执行基类构造函数,再调用派生类构造函数。  释放时先释放派生类构造函数,再释放基类构造函数

**1、基类没有缺省构造函数,派生类必须要在初始化列表中显式给出基类名和参数列表。

  2、基类没有定义构造函数,则派生类也可以不用定义,全部使用缺省构造函数。

  3、基类定义了带有形参表构造函数,派生类就一定定义构造函数。

 

 

派生类的析构函数:

先执行派生类自己的析构函数,对派生类新增加的成员进行清理。再执行子对象的构造函数,对子对象进行清理,最后调用基类的构造函数,对基类构造函数进行清理。

 

 

4.继承体系中的作用域

子类和父类中有同名成员,子类成员将屏蔽父类对成员的直接访问

 

 

 

5.继承的转化

1.子类对象可赋值给父类,但父类对象不可赋值给子类

2.父类对象的指针可以指向子类对象,但子类对象的指针不可以指向父类

 

 

 

 

6.多重继承

   一个派生类有俩个或俩个以上的基类称为多重继承。声明多重记载的方法:

     class D:public A,private B,protected C{D新增加的成员}

 

但多重继承会因为继承成员同名产生二义性。为了解决这个问题引入虚继承:

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值