- 理解继承与派生
- 派生类声明方式
- 派生类的组成
- 派生类的成员访问 - 派生类的构造函数和析构函数
- 公有继承、私有继承及受保护继承
重点对于公有继承的理解与学习
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是不可以递归调用的。