baidu_34602556 2016-06-05 09:04 采纳率: 16.7%
浏览 1010
已采纳

请问问什么这个执行完析构函数不能回到主函数继续执行啊?

[code=c]#include
#include
using namespace std;
class student
{
public:
student();
student(char*stu_name);
void setname();
char* getname();
student*getnext();
void setnext(student*astu);
private:
char name[20];
student*next;
};

class link
{
public:
link();
~link();
BOOL link_add(student*stu);
student* link_find(char*name);
BOOL link_delete(char*name);
student* link_change(student*stu,char*aname);

private:
student*head;
};

student::student()
{
strcpy(name,"待输入");
}
student::student(char*stu_name)
{
strcpy(name,stu_name);
}
char* student::getname()
{
return name;
}
void student::setname()
{
cout<<"请输入学生姓名:";
cin>>name;
}
void student::setnext(student*astu)
{
next = astu;
}
student*student::getnext()
{
return next;
}
link::link()
{
head = NULL;
}
link::~link()
{
student*pre=head,*cur;
while(pre!=NULL)
{
cur = pre->getnext();
delete(pre);
pre = cur;
}
return;
}
BOOL link::link_add(student*stu)
{
student* astu = new student();
astu = *stu;
student*cur=head,*pre=NULL;
while(cur!=NULL)
{
pre = cur;
cur = cur->getnext();
}
if(pre == NULL)
head = astu;
else
pre->setnext(astu);
return true;
}
student
link::link_change(student*stu,char*aname)
{
student*astu = link_find(aname);
if(astu!=NULL)
{
astu = *stu;
return astu;
}
else
return NULL;
}
BOOL link::link_delete(char*name)
{
if(head==NULL||link_find(name)==NULL)
return false;
student*cur=head,*pre=NULL,*temp;
while(cur!=NULL&&strcmp(cur->getname(),name)!=0)
{
pre = cur;
cur = cur->getnext();
}
temp = cur->getnext();
delete cur;
if(pre == NULL)
head = temp;
else
pre->setnext(temp);
return true;
}
student
link::link_find(char*name)
{
student*cur = head;
while(cur!=NULL)
{
if(strcmp(cur->getname(),name)==0)
return cur;
}
return NULL;
}

int main()
{
link students_data;
static student stu("aa");
static student stu1("bb");

students_data.link_add(&stu);
students_data.link_change(&stu1,"aa");
students_data.link_find("bb");
students_data.link_delete("bb");
delete &students_data;

printf("it works");









return 0;

}

[/code]

没打印。。

  • 写回答

1条回答 默认 最新

  • 小灸舞 2016-06-05 12:09
    关注

    这里直接报异常了delete &students_data;
    当然打印不出"it works"
    你的students_data又不是new的,你delete是要干嘛

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程