类中动态数组的问题

mastking 2003-05-09 07:32:04
#include <iostream.h>
class IntString
{
private:
int size; //数组长度
int *ints; //动态数组
public:
IntString(){}

IntString(int num)
{
int i;
size=num;
ints = new int [size];
for(i=1;i<=size;i++)
cin>>ints[i];
}
~IntString()
{
delete[] ints;
}
};

void main()
{
IntString m(3);
}


编译时没错,运行时候出错!
是不是类中的动态数组不应该这样定义?
...全文
33 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tuxw 2003-05-09
  • 打赏
  • 举报
回复
问题就在这个儿
for(i=1;i<=size;i++)
cin>>ints[i];

数组下标应 0--- (size-1), 而现在操作的却是 1 --- size
mastking 2003-05-09
  • 打赏
  • 举报
回复
ft...
知道了...

for(i=0;i<size;i++) //下标越界.....

5555555.........
谢谢大家了
point_to 2003-05-09
  • 打赏
  • 举报
回复
似的,分配的时候是从0开始到size-1为止

for(i=1;i<=size;i++)
cin>>ints[i];
这样就出界了!

:::
for(i=0;i<size;++i)
cin>>ints[i];
leebixy 2003-05-09
  • 打赏
  • 举报
回复
改为:
#include <iostream.h>
using namespace std;//最好加上该行!
class IntString
{
private:
int size; //数组长度
int *ints; //动态数组
public:
IntString(){}

IntString(int num)
{
int i;
size=num;
ints = new int [size];
for(i=0;i<size;i++)/*下标是从0开始的,而c并不检查下标越界,所以编译是你 没有出错!*/
cin>>ints[i];
}
~IntString()
{
delete[] ints;
}
};

void main()
{
IntString m(3);
}
yuanhen 2003-05-09
  • 打赏
  • 举报
回复

没有什么问题啊!
不过,for这么写我看比较顺眼!
for(i=0;i<size;i++)
getwill 2003-05-09
  • 打赏
  • 举报
回复
ints = new int [size];
应该为
ints = (int *)malloc (size*sizeof(int));

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧