【发布时间】:2013-06-18 11:24:01
【问题描述】:
我对以下说明感到非常困惑:
#include <iostream>
#define MAX_IT 100
using namespace std;
class Integer{
private :
int a;
public:
Integer(int valoare){a=valoare;}
int getA(){return a;}
void setA(int valoare){a=valoare;}
};
int main(){
Integer* a=new Integer(0);
//cout<<a[0].getA();
for(int i=1;i<=MAX_IT;i++)
{
a[i]=*(new Integer(i));
}
for(int i=0;i<=MAX_IT;i++)
cout<<a[i].getA()<<endl;
return 13;
}
它适用于 MAX_IT 的小值,但是当我尝试将 MAX_IT 设置为 1000 时,它不再起作用。 最初,我认为“新”运算符应该完成这项工作,但在阅读了一些文档后,我明白它根本不应该像这样工作(超出范围的数组)。
所以我的问题是:为什么它适用于较小的 MAX_IT 值而不适用于较大的值?
编辑:
我正在为一个更大的程序试验这段代码,但不允许我使用 STL。你没有理解我的担心:如果我有 Integer *var=new Integer[10]; for(int k=1;K
【问题讨论】:
-
如果你能帮上忙,千万不要使用
new。 -
恐怕在 C++ 标准中没有任何东西可以使它适用于小型
MAX_IT,但不适用于大型。a很小的时候很可能在内存中没有任何东西,但这主要取决于您的编译器。只需编写正确的代码;) -
?
return 13;?????认真的吗? -
@milleniumbug:运行那个程序会带来厄运!