C++入门学习13 继承和派生

- 理解继承与派生

  • 派生类声明方式
  • 派生类的组成
    - 派生类的成员访问
  • 派生类的构造函数和析构函数
    - 公有继承、私有继承及受保护继承
    重点对于公有继承的理解与学习

OOP(Object Oriented Programming) 面向对象

  • 万物皆对象
  • 是一种对现实世界理解和抽象的方法
  • 封装,继承和多态

*在C++中,代码重用是通过“继承(inheritance)”*机制实现

  • 所谓继承就是在一个已经存在的类基础上,再建立一个新类
  • 从已有的类派生出新的类,派生类就继承了原有类(基类)的特征,包括成员和方法

通过继承可以完成下面的一些功能

  • 可以在已有累的基础上添加新功能,如对于数组类,可以添加数学计算
  • 可以给类添加数据成员,如对于字符串类,可以派生出一个类,并添加指定成员表示颜色
  • 可以修改类方法的行为,如对于普通英雄类,可以派生出拥有更丰富技能的近战英雄类
    在这里插入图片描述
    Astah----画UML图在这里插入图片描述
    可以利用类图直接生成代码文件,然后直接可以修改方法。
    在这里插入图片描述
    注意:
    1.派生类对象存储了积累的数据成员,即派生类继承了基类的实现
    2.派生类对象可以使用基类的非私有函数,即派生类继承了基类的接口
    3.派生类需要自己的构造函数
    4.派生类可以根据需要添加额外的数据成员和函数

继承 – 公有继承, 私有继承, 保护继承

const的使用注意点
在这里插入图片描述
来自大佬的建议:
尽量使用引用,尽量在代码早期根据情况使用const

使用引用的好处:
1.跟指针的效率一样;
2.关键是不会单独占用一个地址,并且还多了编译器检测
对象类型 使用引用类型

在这里插入图片描述
-> 取成员运算符,取得指针所指向的类对象或结构对象的成员变量的值,或者调用其成员函数
在这里插入图片描述
在这里插入图片描述

等价表示方法。

公有继承
在这里插入图片描述

子类既可以调用父类构造,也可以调用子类的构造

在派生类中不能直接访问/调用基类的私有成员
在这里插入图片描述
报错:
在这里插入图片描述
在这里插入图片描述
在有子类对象的时候:
// 情况1:派生类如果不实现Move方法,默认会调用基类实现
//情况2: 派生类实现了Move方法(相当于覆盖了基类实现),那么就会调用子类实现
不是子类对象的时候
在这里插入图片描述

1.栈区—直接实例化
2.堆区–使用new创建对象时在这里插入图片描述
成员函数是不需要占空间的。

在这里插入图片描述
创建是先创建基类,再创建派生类成员
释放的时候,是先释放派生类的成员,再释放基类的成员 释放–析构

如果使用基类引用指向派生类对象,那么基类引用就不能调用派生类中定义的方法了
基类指针也可以指向派生类对象
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
派生类成员的访问----

全部继承 不封装基类/完全封装基类/选择封装基类/--------公用继承/私有继承/使用受保护继承

不管使用那种继承,派生类都不能访问基类的私有成员
在这里插入图片描述
在这里插入图片描述
私有继承的例子

在这里插入图片描述
在这里插入图片描述
C语言中main是可以递归调用
C++中main是不可以递归调用的。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值