《野猪乐园》显示文章详细内容: [展开] [回复] [网址] [举报] [屏蔽]
粘玉米
粘玉米目前处于离线状态
等    级:资深长老
经 验 值:27242
魅 力 值:4887
龙    币:14686
积    分:17746.1
注册日期:2002-11-25
 
  查看粘玉米个人资料   给粘玉米发悄悄话   将粘玉米加入好友   搜索粘玉米所有发表过的文章   给粘玉米发送电子邮件      

请教C++编程高手一个问题,这个程序会不会跑飞?
#include <iostream>
using namespace std;

class Student
{
public:
Student (char *name);
~Student();
public:
char name[30];
Student *next;
static Student *point;
};

Student::Student (char *name)
{
strcpy(Student::name,name);
this->next=point;
point=this;
}

Student::~Student ()//析构过程就是节点的脱离过程
{
cout<<"析构:"<<name<<endl;

if(point==this)
{
point=this->next;
cin.get();
return;
}
for(Student *ps=point;ps;ps=ps->next)
{
if(ps->next==this)
{
cout<<ps->next<<"|"<<this->next<<endl;
ps->next=next;//=next也可以写成this->next;
cin.get();
return;
}
}
cin.get();
}

Student* Student::point=NULL;
void main()
{
Student *c = new Student("marry");
Student a("colin");
Student b("jamesji");
delete c;
Student *fp=Student::point;
while(fp!=NULL)
{
cout<<fp->name<<endl;
fp=fp->next;
}
cin.get();
}

我感觉,在main 里,执行delete c时的析构函数里,什么都没有做,但是*C在堆里申请的空间已经被释放掉了。这样,这个链表就不完整了。。。。
然后在执行while 循环时,fp有可能永远不是NULL...

哪位大拿帮忙解或?

--
我很懒.
到底有多懒?
我懒得形容
2008-01-30 11:16:46   此文章已经被查看476次   
 相关文章: [回复]  [顶端] 



  您必须登录论坛才可以发表文章:
 
用户名:   密码:   记住密码:    (忘记密码 注册




版权所有 回龙观社区网 经营许可证编号:京B2-20201639 昌公网安备1101140035号

举报电话:010-86468600-5 举报邮箱: