void add_emp()
{
cout << "请输入添加职工数量:";
int addnum=0;
cin >> addnum;
if(addnum>0)
{
int newsize=this->m_Empnum+addnum;
worker ** newspace=new worker*[newsize];
if(this->m_Emparray!=NULL)
{
for(int i = 0;i < m_Empnum;i++)
{
newspace[i]=this->m_Emparray[i];
}
}
for(int i = 0;i "请输入第"<< i+1<<"个职工编号:";
cin >> id;
cout << "请输入第"<< i+1<<"个职工姓名:";
cin >> name;
cout<<"请输入第"<1<<"个职工岗位"<"1.普通职工"<< endl;
cout << "2.经理"<< endl;
cout << "3.老板"<< endl;
cin >> Deptid;
worker * wr=NULL;
switch(Deptid)
{
case 1:
wr=new Employaa(id,name,1);
break;
case 2:
wr=new manager(id,name,2);
break;
case 3:
wr=new Boss(id,name,3);
break;
}
newspace[this->m_Empnum+i]=wr;
//cout << m_Emparray<< endl;
delete[] this->m_Emparray;
m_Emparray=newspace;
cout<// cout<
this->m_Empnum=newsize;
//worker *w=NULL;
//w=new Boss(1,"张三",1);
cout << "成功添加"<< addnum<<"名员工"<
假设m_Empnum=1,addnum=2;newspace的元素个数为newsize就等于二者之和3
18行i = 0时,添加第一个人。运行到53行,m_Empnum=newsize=3。
继续下一次for循环,此时i=2,运行到46行时,newspace[m_Empnum+i]也就是取[3+2]=[5] 这不越界崩溃吗?
修改参数值,程序崩溃,不用怀疑,百分百数组溢出了