代码错误!!!
#include<iostream>
using namespace std;
class Item
{
public:
Item(char* name, int age)
{
if (NULL == name)
{
m_name = new char[10];
strcpy(m_name, "未命名");
}
else
{
m_name = new char[strlen(name)+1];
strcpy(m_name, name);
}
m_age = age;
Next = NULL;
}
~Item()
{
if (m_name)
{
delete []m_name;
m_name = NULL;
}
}
void Display()
{
cout << this->m_name <<":"<< this->m_age <<endl;
}
int m_age;
char* m_name;
Item* Next;
};
class list
{
public:
list()
{
m_head = NULL;
m_tail = NULL;
m_len = 0;
}
~list()
{
}
bool IsEmpty()
{
return (m_len == 0);
}
void CreatNode(char* name, int age =0)
{
Item* node = new Item(name, age);
if ((m_head == m_tail) && (m_head == NULL))
{
m_head = node;
m_tail = node;
m_head->Next = NULL;
m_tail->Next = NULL;
m_len = 1;
}
else
{
m_tail->Next = node;
m_tail = m_tail->Next;
m_tail->Next = NULL;
}
}
bool DelNode(int index, int offset=0)
{
return false;
}
Item* Locate(int index, int offset=0)
{
Item* node = NULL;
if (index<0 || index>m_len)
{
return NULL;
}
switch (offset)
{
case 0:
{
node = m_head;
int stedp =0;
while(node)
{
if(index == stedp+1)
{
return node;
}
stedp++;
node = node->Next;
}
if (index != stedp+1)
{
break;
}
return node;
}
break;
case 1:
{
}
break;
}
return NULL;
}
Item* operator[](int index)
{
if(index<0 || index>=m_len)
{
return NULL;
}
else
{
return Locate(index+1);
}
return NULL;
}
void Display()
{
Item* node = m_head;
while(node)
{
cout << node->m_name<<":"
<< node->m_age <<endl;
node = node->Next;
}
}
private:
Item* m_head;
Item* m_tail;
int m_len;
};
int main()
{
list* s = new list;
s->CreatNode("nam", 34);
s->CreatNode("nX", 34);
s->CreatNode("nD", 34);
s->CreatNode("nXXm", 34);
s[2].Display();
delete s;
return 0;
}
运行结果如下:
_8:3672120
我想输出相应的第二项,去输出了这个,想问下这是哪里的问题?还请大家不吝赐教?是否是对象的生命周期的问题!如果是请标出位置