回 帖 发 新 帖 刷新版面

主题:我的这个解释正确不?

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指针没有初始化结果导致的错误,,请各位帮忙分析一下,为什么要在构造函数中初始化,这个有对后面的输出部分有什么影响?是不是像我分析的一样?

回复列表 (共2个回复)

沙发

没仔细看你的代码  我用VS2010运行没问题

板凳

你好.我是全职网赚工作者.
如果你有时间有电脑.会打字.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册