| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 594 人关注过本帖
标题:函数重载的时候出现问题了!
只看楼主 加入收藏
zhiqiang
Rank: 1
来 自:中国沈阳
等 级:新手上路
帖 子:24
专家分:0
注 册:2006-4-24
收藏
 问题点数:0 回复次数:1 
函数重载的时候出现问题了!
我又到这里来求助了,这次又找不到问题出在哪里了。还望大家指教!

编译,组建都通过了,但是运行出现了对话框。" border="0" />


源代码如下:

//  处理一个由数组构成的线性表,动态产生线性表,并输出线性表中的数据。

#include <iostream.h>
class ListClass
{
  int  *ListPtr;     // 指向线性表的指针
  int  nMax;      // 线性表的最大长度
  int  nElem;      // 线性表中的当前元素的个数
public:
  ListClass(int n=10)    // 构造函数,初始化线性表,最大长度10为初始值
  {
     nElem = 0;
     nMax = n;
     if (n)
        ListPtr = new int[n];
     else
        ListPtr = 0;
  }
  ~ListClass(void)    // 析构函数
  {
     delete [nMax]ListPtr;
  }
  int Elem(int);     // 重载函数①,在线性表尾增加一个元素
  int &Elem(unsigned n)   // 重载函数②,返回线性表中第n个元素的引用
  {
     return nElem;
  }
  int Elem(void)     // 重载函数③,返回线性表中当前元素的个数
  {
     return nElem;
  }
  int Max(void)     // 返回线性表的长度
  {
     return nMax;
  }
  int GetElem(int i)    // 返回线性表的第i个元素
  {
     if ((i>0) && (i<nElem))
        return ListPtr[i];
     else
     {
        cout << "下标越界" << endl;
        return (0);
     }
  }
  void Print(void);    // 输出线性表中的所有元素
};

int ListClass::Elem(int elem)  // 重载函数①,在线性表尾增加一个元素
{
   if (nElem<nMax)     // 如果实际元素个数小于表的长度
   {
       ListPtr[nElem++] = elem; // 增加元素
       return (nElem);    // 返回新表的元素个数
   }
   else       // 如果实际元素个数等于表的长度
   {
       int  *newptr;
       newptr = new int[nMax+10]; // 申请一新表空间
       for (int i=0; i<nElem; i++)
           newptr[i] = ListPtr[i]; // 将原表中的元素拷贝到新表中
      delete [nMax]ListPtr;  // 释放原表空间
      nMax += 10;
      ListPtr = newptr;
      ListPtr[nElem++] = elem; // 增加元素
      return (nElem);    // 返回新表中的元素个数
    }
}

void ListClass::Print(void)   // 输出线性表中的所有元素
{
   for (int i=0; i<nElem; i++)
      cout << ListPtr[i] << '\t';
   cout << endl;
}
void main()
{
  ListClass  list(6);
  for (int i=0; i<5; i++)
     list.Elem(i);    // 调用重载函数①
  cout << "线性表的长度为:" << list.Max() << endl;
  cout << "线性表的元素个数为:";
  cout << list.Elem() << endl; // 调用重载函数③
  cout << "线性表的元素为:";
  list.Print();
  list.Elem(3u) = 100;   // 调用重载函数②
  cout << "线性表的第三个元素的值为:";
  cout << list.Elem(3u) << endl; // 调用重载函数②
  list.Elem(20);     // 调用重载函数①
  list.Elem(200);     // 调用重载函数①
  cout << "现在线性表的长度为:" << list.Max() << endl;
  cout << "现在线性表中的元素个数为:";
  cout << list.Elem() << endl; // 调用重载函数③
  cout << "线性表的元素为:";
  list.Print();
  cout << "线性表的最后一个元素为:";
  cout << list.GetElem(list.Elem()-1) << endl;
}
搜索更多相关主题的帖子: 函数 重载 
2007-12-03 16:09
zhiqiang
Rank: 1
来 自:中国沈阳
等 级:新手上路
帖 子:24
专家分:0
注 册:2006-4-24
收藏
得分:0 
我已经解决了,
是我太粗心了,有一行输入错了

2007-12-03 16:16
快速回复:函数重载的时候出现问题了!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018795 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved