• 当父类之下,存在许多不同的子类时,要想实现将不同子类对象储存在同一个数组内,可使用父类指针进行统一,例如
//父类
class Worker{};
//子类1
class Boss :public Worker{};
//子类2
class Manager :public Worker{};
//子类3
class Employee :public Worker{};
//欲将子类123对应的对象储存起来以备后用,则可使用父类指针结合二级指针来维护这段内存
Worker* b = new Boss();
Worker* m = new Manager();
Worker* e = new Employee();
Worker** m_array = new Worker[5];
//如果需要扩展这段内存,只需仿照此法,建立一个更大的,在将旧数组赋值到新数组中,在释放旧数组,即可
//此类思想,在向量的扩容、数据结构的动态分配内存中也有所体现————一种动态分配、釜底抽薪的思想
Worker** newArry = new Worker[10];
if(array != nullptr)
{
for(int i=0 ;i < 10 ;i++)
{
newArry[i] = m_arry[i];
}
}
//添加子类对象
int n;
cin>>n;
Worker* worker = nullptr;
switch(n)
{
case '1':
worker = new Boss();
break;
case '2':
worker = new Manager();
break;
case '3':
worker = new Employee();
break;
}
newArry[i+1] = worker;
//释放旧数组
delete [] m_arry;
//更改指向
m_arry = newArry;
//m_arry是贯穿整个代码的数组,那怕是扩容了,也应该是延续使用m_arry的数组名
//通常,m_arry是在类中声明的,而newArry只是临时的。
//另外
newArry = nullptr;
• 储存想要保存但代码需要delete的数据,可使用文件操作,进行文件编写,
参考博客:C++笔记--文件操作-CSDN博客