苏嵌 补17.02.27

继承:

基类(父类)

派生类(子类)


派生类是基类的具体化


用法:class 派生类名 :基类名


继承的三种方法:公有 私有 保护


默认继承:

struct D1:Base{};    //公有继承(结构体也可以继承)

class D2:Base{};    //私有继承


派生类无法访问基类的构造函数


派生类中的所有的构造方法都需要调用基类的构造方法


先调用基类的构造函数,再调用派生类的构造函数

先释放派生类的构造函数,再释放基类的构造函数


构造函数:基类的子对象->基类->派生类的子对象->派生类

析构函数:与上面相反


不能被继承:①构造函数 ②析构函数 ③=运算符 ④友元关系               静态成员无所谓继承


接口继承与实现继承:

接口继承在基类中实现,派生类中不实现

实现继承在基类中实现但private,派生类中重新实现


基类、派生类的转换:

向上转型   派生类到基类√

向下转型   基类到派生类×


单纯继承无异议 多态中有意义


public类型编译器自动转化

private\protected类型 需要强制类型转化------>pb = reinterpret_cast<Base *>(pd);


二义性☆


多继承不能用虚继承


作用域限定符解决了多继承和多重继承的二义性

虚继承解决多重继承的二义性


使用虚继承 编译器默认生成虚基类表指针 vbptr  指向虚基类表(数组)   保存数组的地址


vbptr             1、本类地址与虚基类表指针地址的差   B1和vbptr   0

                      2、虚基类地址与虚基类表指针在地址的差     B1和bb_   8

虚基类永远在最下面


虚基类的成员是由最远派生类的构造函数通过虚基类的构造函数进行初始化的


虚基类构造函数是谁调用的?    最远派生类


☆对象的动态创建

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值