多态
多态是C++面向对象三大特性之一
多态分为两类
静态多态:函数重载和运算符重载属于静态多态,复用函数名
动态多态:派生类和虚函数实现运行时多态
静态多态和动态多台区别:
静态多态的函数地址早绑定 - 编译阶段确定函数地址
动态多态的函数低着晚绑定 - 运行阶段确定函数地址
多态的优点:
代码组织结构清晰
可读性强
利于前期和后期的扩展以及维护
纯虚函数和抽象类
在多态中,通常类中虚函数的实现是毫无意义的,主要都是调用子类重写内容
因此可以将虚函数改为纯虚函数
纯虚函数语法:virtual 返回类型 函数名 (参数列表) = 0;
当类中有了纯虚函数,这个类也称为抽象
抽象类特点:
无法实例化对象
子类必须重写抽象类中的纯虚函数,否则也属于抽象类
虚析构和纯虚机构
多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码
解决方法:将父类中的析构函数改为虚析构或者纯虚析构
虚析构和纯虚析构共性:
可以解决父类指针释放子类对象
都需要有具体的函数实现
虚析构和纯虚析构区别:
如果纯虚析构,该类属于抽象类,无法实例化对象
虚析构语法:
virtual ~类名(){}
纯虚析构语法:
virtual ~类名()= 0;
文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化
C++中对文件操作需要包含头文件<fstream>
文件类型分为两种:
1.文本文件 - 文件以文本的ASCLL码形式存储在计算机中
2.二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们
操作文件的三大类:
1.ofstream:写操作
2.ifstream:读操作
3.fstream:读写操作
读文件
读文件步骤如下:
1.包含头文件
#include<fstream>
2.创建流对象
ifstream ifs;
3.打开文件并判断文件是否打开成功
ifs.open(“文件路径”,打开方式);
4.读数据
四种方式读取
5.关闭文件
ifs.close();
二进制文件
以二进制的方式对文件进行读写操作
打开方式要指定为ios::binary
写文件
二进制方式写文件主要利用流对象调用成员函数write
函数原型:ostream& write(const char * buffer,int len);
参数解释:字符指针buffer指向内存中一段储存空间。len是读写的字节数
示例:
#include<fstream>
#include<string>
class person
{
publlic:
char m_Name[64];
int m_Age;
};