主题:我的这个解释正确不?
2010年7月25日21:24:41
不能weiread的原因在于我没有在构造函数中初始化???
为什么那?
#include "iostream"
#include "string"
using namespace std;
class A
{
string name;
A *head; // 头结点要在内部设置
A *next;
public:
A *nn;
A(){head=next=nn=0;} //加了一个构造函数后就可以了为什么啊?如果没有会导致不能为read在输出的时候
// 反序输入
void list(string n)
{
A *ne=new A;
ne->name=n;
if(head==0)
{ head=ne;
ne->next=NULL;
}
else
{ne->next=head;
head=ne;
}
// 下面是正序的输入方法
};
void put()
{
A *me;// 此时这个me也包含了head和next指针,并且嗲用了默认的构造函数,但是此时head和next并没有初始化,所以此时会导致,这个me=me->next的可能不是0,所以此时不能停止,所以此时指针读取越界了,所以此时会导致不能为read
if(head!=0)
{me=head;
while(me!=NULL)
{ cout<<me->name<<endl;
me=me->next;
}
}
}
void destory()
{
A *me;
while(head!=NULL)
{ me=head; // 必须这个样子的,
head=head->next;
delete me;
}
}
};
void main()
{
A me;
me.list("a");
me.list("b");
me.list("c");
me.list("d");
me.list("e");
me.list("dd");
// me.put();
me.destory();
me.put();
}
我想问德尔就是,我的那个输出部分的解释,是不是正确,那么不能为read的原因是不是就是因为next指针没有初始化结果导致的错误,,请各位帮忙分析一下,为什么要在构造函数中初始化,这个有对后面的输出部分有什么影响?是不是像我分析的一样?
不能weiread的原因在于我没有在构造函数中初始化???
为什么那?
#include "iostream"
#include "string"
using namespace std;
class A
{
string name;
A *head; // 头结点要在内部设置
A *next;
public:
A *nn;
A(){head=next=nn=0;} //加了一个构造函数后就可以了为什么啊?如果没有会导致不能为read在输出的时候
// 反序输入
void list(string n)
{
A *ne=new A;
ne->name=n;
if(head==0)
{ head=ne;
ne->next=NULL;
}
else
{ne->next=head;
head=ne;
}
// 下面是正序的输入方法
};
void put()
{
A *me;// 此时这个me也包含了head和next指针,并且嗲用了默认的构造函数,但是此时head和next并没有初始化,所以此时会导致,这个me=me->next的可能不是0,所以此时不能停止,所以此时指针读取越界了,所以此时会导致不能为read
if(head!=0)
{me=head;
while(me!=NULL)
{ cout<<me->name<<endl;
me=me->next;
}
}
}
void destory()
{
A *me;
while(head!=NULL)
{ me=head; // 必须这个样子的,
head=head->next;
delete me;
}
}
};
void main()
{
A me;
me.list("a");
me.list("b");
me.list("c");
me.list("d");
me.list("e");
me.list("dd");
// me.put();
me.destory();
me.put();
}
我想问德尔就是,我的那个输出部分的解释,是不是正确,那么不能为read的原因是不是就是因为next指针没有初始化结果导致的错误,,请各位帮忙分析一下,为什么要在构造函数中初始化,这个有对后面的输出部分有什么影响?是不是像我分析的一样?