人小鬼不大

导航

 

一、IS-A继承

1、公有继承

特性

  (1)保持基类的访问权限不变,基类数据成员只能通过基类的方法访问

  (2)派生类需要自己的构造函数,创建对象时,需要使用成员初始化列表,将基类成员一起初始化

  (3)派生类可以重载基类成员函数,也可以添加额外的方法和数据成员

  (4)创建派生类对象时,基类对象将被先行创建,即先调用基类的构造函数

  (5)如果不调用基类构造函数,直接创建派生类对象时,将使用默认的基类构造函数

实例

 

2、私有继承

  使用情况少

 

3、保护继承

主要用于继承中派生类可以直接访问基类的protected成员。

 

二、HAS_A关系

1、在类中使用其他类的对象,如string类对象

2、使用私有继承

 

三、多态公有继承

特性 

  (1)能够在派生类中重定义基类的方法,是重定义,原型不一定相同,函数体不同,将隐藏基类方法;重载是原型不同,函数体必须相同;如果基类虚函数被重载,则需在派生类重定义所有版本

  (2)基类使用虚方法,在基类和派生类中不同实现

  (3)编译器对非虚方法使用静态联编,是哪个数据类型调用哪个方法;使用虚方法,将动态联编,根据指针和引用对象来调用相应的方法

  (4)静态联编:执行效率更高,如果类不用做基类,就不使用动态联编!

实例

四、多继承、多重继承和虚拟继承

  多继承:一个类继承于多个类

  多重继承:一个类继承的多个类又继承于另一个类,会导致创建的类有多份基类的拷贝,浪费内存

  虚拟继承:使用虚拟继承从而解决了拷贝多基类的问题,只会保留一份拷贝

posted on 2019-12-29 12:11  人小鬼不大  阅读(116)  评论(0)    收藏  举报