今天上午背了一个小时单词,本来打算背45个的,只背了30个明天多背15个吧。
中午听了半小时多听力,结果我发现我的听力有了大进步啊,感觉爽,可能跟我经常听英语歌有关系,哈哈
下午主要就自己复现了昨天的代码,还发现有些不足,
第一处,如何释放的newspace
void workermanager::add() { // ...(省略其他代码) // 在这里先释放旧的EmpArray if (this->EmpArray != NULL) { delete[] this->EmpArray; } // 然后将EmpArray指向新分配的内存 this->EmpArray = newspace; this->EmpNum = newnum; // ...(省略其他代码) } // 析构函数中释放当前指向的EmpArray workermanager::~workermanager() { if (this->EmpArray != NULL) { delete[] EmpArray; } }
答案,释放的不是newspace,而是它指向的堆区空间,而newspace和EmpArry指向同一片堆区内存,newspace只存在于add函数作用域,所以用EmpArry释放堆区内存就可以了
第二处
猜猜为什么访问不了里面的函数
#pragma once
#include<iostream>
using namespace std;
class Workermanager {
Workermanager();
void menu();
void exit();
void add();
};
答案,因为没加public,类成员类成员函数会默认是私有的
第三处
函数起名不推荐用关键词,为什么
void Workermanager::exit1(){
cout << "欢迎下次使用" << endl;
exit(0);
system("pause");
system("cls");
}
答案,因为覆盖掉关键词原来的意思,想再用关键词,编译器不知道你是要调用函数,还是用关键词
第四处
答案,这个是因为本来要写在源文件的实现代码,写在了头文件里,不太好看出来
第五处
答案,这个是Worker是父类不需要源文件,加了不实现就会这样,并且多态父类的纯虚函数不需要实现
第六处
答案,这是因为,new动态分配内存右边的格式是new关键词加类型名,不需要变量名,动态分配数组的话,加一个中括号里面填属于成员个数
第七处
答案,定义指针后面如果要用的话,要先初始化一下