一、多态
1.1多态得基本概念
多态分为两类
1、静态多态:函数重载和运算符重载属于静态多态复用函数名
2、动态多态:派生类和虚函数实现运行多态
静态多态和动态多态区别
静态多态得函数地址找早绑定——编译阶段确定函数地址
动态多态得函数地址晚绑定——运行阶段确定函数地址
总结:多态满足条件 1、有继承关系 2、子类重写父类中得虚函数
多态使用条件:1、父类指针或引用指向子类对象
重写:函数返回值类型函数名参数列表完全一致称为重写
//如果想扩展新的功能需求修改源码、在开发中提倡开闭原则、开闭原则是指对扩展进行开放,对修改关闭
1.2纯虚函数和抽象类
在多态中通常父类中虚函数的实现是毫无意义的主要都是调用子类重写的内容,因此可以将函数改为纯函数
纯函数的语法:virtual 返回值 类型函数名 (参数列表)=0;
当类中有了纯虚函数这个类称为抽象类
抽象类的特点:1、无法实例化对象 2、抽象类的子类,必须重写父类的纯虚函数否则也属于抽象类 3、子类不需要重写父类中的纯虚函数否者无法实现实例化对象
1.3虚析构和纯虚构函数共性
多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释方式无法调用到子类析构代码
解决方法:将父类中的析构改为虚析构或纯虚析构
虚析构和纯虚析构共性:可以解决指针释放子类对象都需要有具体的函数实现
虚析构和纯虚析构的区别:如果时纯虚析构该类属于抽象类无法实例化对象
虚析构语法:virtual ~类名(){}
纯虚虚构语法:virtual ~类名()=0;
总结:1、虚析构或纯虚析构就是用来解决通过父类指针释放子类对象 2、如果子类中没有堆区数据可以不写虚析构或纯虚析构 3、拥有纯虚析构函数的类也属于抽象类
二、文件操作
程序运行时产生的数据都属于临时数据程序一旦运行结束就会被释放
通过文件可以将数据持久化
C++中对文件操着需要包括头文件<fstream>
文件类型分为两种
1、文本文件:文件以文本的ASCII码形式被存储在计算机中
2、2进制文件:文件以文本二进制形式存储在计算机中
操作文件三大类
1、ofstream 写操作 2、ifstream 读操作 3、fstream 读写操作
写文件、写文件步骤
1、包括头文件#include<fstream> 2、创建流对象 ofstream ofs 3、打开文件 ofs.open(”文件路径“,打开方式) 4、写数据 ofs<<”写的数据“; 5、关闭文件
ofs.close();
打开方式:
ios::in 为读文件而打开文件
ios::out 为写文件而打开文件
ios::ate 初始化位置:文件尾
ios::app 追加方式”写文件