首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个题 们 帮帮忙啊 偶是C++的初学者 !下面的程序 帮偶调下,万分感激。DELETE函数 还没有写。

2012-02-23 
一个弱弱的问题大虾们帮帮忙啊偶是C++的菜鸟!下面的程序 帮偶调下,万分感激。。。。。。DELETE函数还没有写。。#in

一个弱弱的问题 大虾们 帮帮忙啊 偶是C++的菜鸟 !下面的程序 帮偶调下,万分感激。。。。。。DELETE函数 还没有写。。
#include <iostream>  
#include <assert.h>  
using namespace std;
const int p_length=100;
class CStudentManage;


class CStudent
{
  firend CStudentManage;
  CStudent(char lname[],char lsex[],int lnum,char*lp );
  CStudent(const CStudent &oCStudent);
  virtual~CStudent();
  CStudent &operator=(const CStudent &oCStudent);

public:

  char *m_lp;
  char mm_name;
  char mm_sex;
  int mm_num;
};

  

class CStudentManage
{
public:
  CStudentManage(int iN=p_length);
  CStudentManage(const CStudentManage &CStudentManage);
  virtual~CStudentManage(void);
   
  bool insert(const CStudent &oCStudent);
  bool del(void);
  CStudentManage & operator=(const CStudentManage &oCStudentManage);

  void *operator new(size_t size);
  void operator delete(void*p);
private:
  CStudent*m_pCStudent[p_length];
  int m_alength;
  int m_actop;
};


CStudent::CStudent(char lname[],char lsex[],int lnum,char*lp)
{
  m_lp=new char[strlen(lp)+1];
  if(m_lp==null)
  {
  cout<<"内存分配失败"<<endl;
  exit(0);
  }
  strcpy(mm_name[],lname[]);
  strcpy(mn_sex[],lsex[]);
  mm_num=lnum;
}

CStudent::CStudent(const CStudent &oCStudent)
{
  m_lp=new char[strlen(oCStudent.m_lp)+1];
  if(m_lp==NULL)
  {
  cout<<"内存分配失败"<<endl;
  exit(0);
  }
  strcpy(m_lp,oCStudent.m_lp);
  strcpy(mm_name[],oCStudent.lname[]);
  strcpy(mn_sex[],oCStudent.lsex[]);
  mm_num=oCStudent.lnum;
}

CStudent::~CStudent()
{
  delete m_lp;
}

CStudent & CStudent::operator=(const CStudent &oCStudent)
{
  if(this==&oCStudent)
  {
  return *this;
  }
  delete m_lp;
  m_lp=new char[strlen(oCStudent.m_lp)+1];
  if(m_lp==NULL)
  {
  cout<<"内存分配失败"<<endl;
  exit(0);
  }
  strcpy(m_lp,oCStudent.m_lp);
  strcpy(mm_name[],oCStudent.lname[]);
  strcpy(mn_sex[],oCStudent.lsex[]);
  mm_num=oCStudent.lnum;
  return *this;
}


CStudentManage::CStudentManage(int iN)
{
  for (int i=0;i<iN;i++)
  {
  m_pCStudent[i]==NULL;
  }
  m_alength=iN;
  m_actop=0;
}


CStudentManage::CStudentManage(const CStudentManage &CStudentManage)
{
  for(int i=0; i<CStudentManage.m_actop;i++)
  {
  m_pCStudent[i]=new CStudent(oCStudentManage.m_pCStudent[i]->m_lp,oCStudentManage.m_pCStudent[i]->mm_name,
  oCStudentManage.m_pCStudent[i]->mm_sex,oCStudentManage.m_pCStudent[i]->mm_num);
  if (m_pCStudent[i]==null)
  {
  cout<<"内存分配失败"<<endl;
  exit(0);
  }
}
  for(i=CStudentManage.m_actop;i<CStudentManage.m_alength;i++)
  {
  m_pCStudent[i]=null;
  }

m_alength=CStudentManage.m_alength;

m_actop=CStudentManage.m_actop;
}





CStudentManage::~CStudentManage(void)
{
  for(int i=0;i<m_actop;i++)
  {
  delete m_pCStudent[i];
  }
}



bool CStudentManage::insert(const CStudent &oCStudent)
{
  if(m_actop>=m_alength)
  {
  count<<"对不起,已经超过数组长度,不可插入"<<endl;
  return false;
  }

 m_pCStudent[m_actop]=new CStudentManage(CStudent.m_pCStudent[i]->m_lp,CStudent.m_pCStudent[i]->mm_name,
  CStudent.m_pCStudent[i]->mm_sex,CStudent.m_pCStudent[i]->mm_num);
  if(m_pCStudent[m_actop]==null)
{
  cout<<"节点创建失败"<<endl;
  exit(0);
}
  m_actop++;
  cout<<"您已经插入了一个节点"<<endl;
  return ture;
}

  
bool CStudentManage::del(void)
{
  if(!IsEmpty())
  {
  m_actop--;
  cout<<"你删除的节点名字为"<<m_pCStudent[m_actop]->m_lp<<endl;
  delete m_pCStudent[m_actop];
  return ture;
  }
  else
  {
  cout<<"节点数组为空,您不能删除"<<endl;  
  return false;
  }
}

CStudentManage & CStudentManage::operator=(const CStudentManage &oCStudentManage)
{
  if(this==&oCStudentManage)
  {
  return *this;
  }
  if (m_alength!=oCStudentManage.m_alength)
  {
  cout<<"数组的长度不等,不能复制"<<endl;
  return *this;
  }
  for (int=0;i<m_actop;i++)
  {
  m_pCStudent[i]=new CStudent(oCStudentManage.m_pCStudent[i]->m_lp,oCStudentManage.m_pCStudent[i]->mm_name,
  oCStudentManage.m_pCStudent[i]->mm_sex,oCStudentManage.m_pCStudent[i]->mm_num);
  if (m_pCStudent[i]==null)
  {
  cout<<"内存分配失败"<<endl;
  exit(0);
  }
}
  for(i=CStudentManage.m_actop;i<CStudentManage.m_alength;i++)
  {
  m_pCStudent[i]=null;
  }

m_alength=CStudentManage.m_alength;

m_actop=CStudentManage.m_actop;
return *this;
}


void *CStudentManage::operator new(size_t size)
{
  cout<<"自定义的 CStudentManage new"<<endl;
  return malloc(size);
}


void CStudentManage::operator delete(void*p)
{
  cout<<"自定义的 CStudentManage delete"<<endl;
  free(p);
}


   
void main(void) 
{
  CStudent student1("夏福川","男",30);
  CStudent student2("郎俊","男",31);
  CStudent student3("邓鑫洋","男",32);
  CStudent student4("韩飞","男",33);
  CStudent student5("杨孟禹","男",34);
  CStudent student6("章雅娟","女",35);
  CStudent student7("董敏","女",36);
  CStudent student8("祈雪仪","女",37);
  CStudent student9("王媛","女",38);
  CStudent student10("许发玲","女",39);


  CStudentManage oCStudentManage1;


  oCStudentManage1.insert(student1);
  oCStudentManage1.insert(student2);
  oCStudentManage1.insert(student3);、
  oCStudentManage1.insert(student4);
  oCStudentManage1.insert(student5);
  oCStudentManage1.insert(student6);
  oCStudentManage1.insert(student7);


  oCStudentManage1.insert(student8);
  oCStudentManage1.insert(student9);
  oCStudentManage1.insert(student10);  







[解决办法]
太猛了,只看了下语法错误就崩溃了。。

C/C++ code
 
#include <iostream> 
#include <assert.h>   
using namespace std;
const int p_length=100;
class CStudentManage;


class CStudent
{
public: // 16. 构造函数需要公开, main 中调用了
  friend CStudentManage;  // 1. firend 拼写错误
  CStudent(const char lname[],const char lsex[],int lnum, const char*lp = NULL );  // 10. 要用 const 就用完整 15. 后面有只用 3 个参数的版本
  CStudent(const CStudent &oCStudent);
  virtual~CStudent();
  CStudent &operator=(const CStudent &oCStudent);

public:

  char *m_lp;
  char mm_name[100]; // 3. 应该用字符串
  char mn_sex[100];  // 4. 下面都用的 mn_sex
  int mm_num;
};


class CStudentManage
{
public:
  CStudentManage(int iN=p_length);
  CStudentManage(const CStudentManage &CStudentManage);
  virtual~CStudentManage(void);

  bool insert(const CStudent &oCStudent);
  bool del(void);
  CStudentManage & operator=(const CStudentManage &oCStudentManage);

  void *operator new(size_t size);
  void operator delete(void*p);
private:
  CStudent*m_pCStudent[p_length];
  int m_alength;
  int m_actop;
};


CStudent::CStudent(const char lname[],const char lsex[],int lnum, const char*lp)
{
  m_lp=new char[strlen(lp)+1];
  if(m_lp==NULL) // 2. 没有定义 null, 注意大小写
  {
    cout < <"内存分配失败" < <endl;
    exit(0);
  }
  strcpy(mm_name,lname); // 5. 语法呀! strcpy 接受指针参数,再说也没 mm_name[] 这种写法
  strcpy(mn_sex,lsex);  // 5.
  mm_num=lnum;
}

CStudent::CStudent(const CStudent &oCStudent)
{
  m_lp=new char[strlen(oCStudent.m_lp)+1];
  if(m_lp==NULL)
  {
    cout < <"内存分配失败" < <endl;
    exit(0);
  }
  strcpy(m_lp,oCStudent.m_lp);
  strcpy(mm_name,oCStudent.mm_name); // 5
  strcpy(mn_sex,oCStudent.mn_sex);  // 5
  mm_num=oCStudent.mm_num;
}

CStudent::~CStudent()
{
  delete m_lp;
}

CStudent & CStudent::operator=(const CStudent &oCStudent)
{
  if(this==&oCStudent)
  {
    return *this;
  }
  delete m_lp;
  m_lp=new char[strlen(oCStudent.m_lp)+1];
  if(m_lp==NULL)
  {
    cout < <"内存分配失败" < <endl;
    exit(0);
  }
  strcpy(m_lp,oCStudent.m_lp);
  strcpy(mm_name,oCStudent.mm_name);  // 5
  strcpy(mn_sex,oCStudent.mn_sex);  // 5
  mm_num=oCStudent.mm_num;      // 5
  return *this;
}


CStudentManage::CStudentManage(int iN)
{
  for (int i=0;i <iN;i++)
  {
    m_pCStudent[i]=NULL;  // 6. == 是比较,不是赋值
  }
  m_alength=iN;
  m_actop=0;
}


CStudentManage::CStudentManage(const CStudentManage &oCStudentManage) // 7. 汗
{


  for(int i=0; i <oCStudentManage.m_actop;i++)
  {
    m_pCStudent[i]=new CStudent(oCStudentManage.m_pCStudent[i]->mm_name, oCStudentManage.m_pCStudent[i]->mn_sex,
      oCStudentManage.m_pCStudent[i]->mm_num, oCStudentManage.m_pCStudent[i]->m_lp);  // 8. 注意参数顺序
    if (m_pCStudent[i]==NULL)  // 2
    {
      cout < <"内存分配失败" < <endl;
      exit(0);
    }
  }
  for(i=oCStudentManage.m_actop;i <oCStudentManage.m_alength;i++)
  {
    m_pCStudent[i]=NULL; // 2
  }

  m_alength=oCStudentManage.m_alength;

  m_actop=oCStudentManage.m_actop;
}


CStudentManage::~CStudentManage(void)
{
  for(int i=0;i <m_actop;i++)
  {
    delete m_pCStudent[i];
  }
}


bool CStudentManage::insert(const CStudent &oCStudent)
{
  if(m_actop>=m_alength)
  {
    cout < <"对不起,已经超过数组长度,不可插入" < <endl; // 9. cout 也会拼错
    return false;
  }

  m_pCStudent[m_actop]=new CStudent(oCStudent.mm_name,
    oCStudent.mn_sex,oCStudent.mm_num, oCStudent.m_lp);  // 8
  if(m_pCStudent[m_actop]==NULL)  // 2
  {
    cout < <"节点创建失败" < <endl;
    exit(0);
  }
  m_actop++;
  cout < <"您已经插入了一个节点" < <endl;
  return true;  // 11. true 又被你拼错了
}


bool CStudentManage::del(void)
{
  if(!m_actop != 0)  // 12. IsEmpty 没定义
  {
    m_actop--;
    cout < <"你删除的节点名字为" < <m_pCStudent[m_actop]->m_lp < <endl;
    delete m_pCStudent[m_actop];
    return true; // 11.
  }
  else
  {
    cout < <"节点数组为空,您不能删除" < <endl; 
    return false;
  }
}

CStudentManage & CStudentManage::operator=(const CStudentManage &oCStudentManage)
{
  if(this==&oCStudentManage)
  {
    return *this;
  }
  if (m_alength!=oCStudentManage.m_alength)
  {
    cout < <"数组的长度不等,不能复制" < <endl;
    return *this;
  }
  for (int i=0;i <m_actop;i++)  // 13. 变量都没定义
  {
    m_pCStudent[i]=new CStudent(oCStudentManage.m_pCStudent[i]->mm_name,
      oCStudentManage.m_pCStudent[i]->mn_sex,oCStudentManage.m_pCStudent[i]->mm_num, oCStudentManage.m_pCStudent[i]->m_lp);
    if (m_pCStudent[i]==NULL) // 2
    {
      cout < <"内存分配失败" < <endl;
      exit(0);
    }
  }
  for(i=oCStudentManage.m_actop;i <oCStudentManage.m_alength;i++)
  {
    m_pCStudent[i]=NULL; // 2
  }

  m_alength=oCStudentManage.m_alength;

  m_actop=oCStudentManage.m_actop;
  return *this;
}


void *CStudentManage::operator new(size_t size)
{
  cout < <"自定义的 CStudentManage new" < <endl;
  return malloc(size);
}


void CStudentManage::operator delete(void*p)
{
  cout < <"自定义的 CStudentManage delete" < <endl;


  free(p);
}


void main(void)
{
    CStudent student1("夏福川","男",30);  // 14. 分号打成中文了
    CStudent student2("郎俊","男",31);
    CStudent student3("邓鑫洋","男",32);
    CStudent student4("韩飞","男",33);
    CStudent student5("杨孟禹","男",34);
    CStudent student6("章雅娟","女",35);
    CStudent student7("董敏","女",36);
    CStudent student8("祈雪仪","女",37);
    CStudent student9("王媛","女",38);
    CStudent student10("许发玲","女",39);


  CStudentManage oCStudentManage1;


  oCStudentManage1.insert(student1);
  oCStudentManage1.insert(student2);
  oCStudentManage1.insert(student3);  // 17. 、 是什么玩意儿?
    oCStudentManage1.insert(student4);
  oCStudentManage1.insert(student5);
  oCStudentManage1.insert(student6);
  oCStudentManage1.insert(student7);
  oCStudentManage1.insert(student8);
  oCStudentManage1.insert(student9);
  oCStudentManage1.insert(student10); 
}

热点排行