C++继承总结

继承概念
在原有的类不变的基础之上,新增一些函数,对功能进行拓展

继承特点
是面向对象程序设计的的层次结构
是实现由简单到复杂的认知过程

基类:被继承的类
派生类:在继承之后产生的新类

例子
手机系统会不断更新,然而,我们的手机更新之后的功能只是对原来的功能进行优化和新增

继承格式
派生类名 :继承权限 基类名

继承权限
这里写图片描述
注:
1、public 表示派生类中为 公有成员
2、Protect 表示派生类中为 受保护成员(派生类中可以访问,但是类外无法访问,该访问限定符因继承而出现
3、Private 表示派生类中为 私有成员
4、不可见 表示 派生类中无法访直接问该成员

继承权限总结
Public继承是接口继承,保持is-a原则,即每一个子类的是父类的对象
Protect/private继承 是一个实现继承,基类的部分成员并不是完全成为子类接口的一部分,保持has-a原则(聚合原则)
class关键字默认的继承方式是private, struct关键字默认的继承方式是public

派生类默认成员函数(C98)
构造函数
1、 构造基类成员和派生类成员的调用次序:先调用派生类的构造函数(初始化列表中先构造基类成员再构造派生类成员),再调用基类构造函数构造基类成员之后,返回派生类构造函数继续构造派生类成员。

拷贝构造函数

析构函数
1、先调用派生类析构之后,调用基类析构(原因是:先创建的后销毁)

赋值操作符重载
取地址操作符重载
Const修饰的取地址操作符重载
(C++ 11中新增两个成员函数)
移动构造
移动赋值

继承体系中的作用域
1、基类和派生类不是同一块作用域
2、同名隐藏问题:因为派生类中有与基类同名的成员,派生类中将隐藏基类的同名成员,不能直接访问,可以通过 (基类名::基类成员)的方式访问

赋值兼容规则
1、前提:在public继承权限下
2、原因:每一个子类都可以是父类的对象
3、结果:
(1)子类对象可以赋值给父类对象,反之不行(会越界)。
(2)父类对象的指针或引用可以指向子类的对象,反之不然(需要强转完成)(会越界)

继承体系下派生类的对象模型
1、单继承
2、多继承
这里写图片描述
3、菱形继承
这里写图片描述
4、虚拟继承
这里写图片描述
5、菱形虚拟继承
这里写图片描述

谢谢关注!!
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值