数组类的初始化问题。
class IntArray
{
public:
IntArray(int size):max_size(size){
cout<<"IntArray:"<<max_size<<endl;
array = new int(max_size*sizeof(int));
for(int i=0;i<max_size;i++)
array[i] =0;
display();
}
/*
~IntArray(){
cout<<"delete"<<endl;
delete []array;
array = NULL;
}*/
/*
int size()const{
return max_size;
}
int &item(int i){
if(i>max_size) {cout<<"item error:参数越界!"<<endl;exit(-1);}
else{
return array[i];
}
}
void assign(IntArray &a){
if(a.size()>max_size) {cout<<"assign error!数组元素太多!"<<endl;exit(-1);}
else{
for(int i=0;i<a.size();i++){
array[i] = a.item(i);
}
}
}
bool equal(IntArray &a){
cout<<a.size()<<" l "<<max_size<<endl;
if(a.size()!=max_size) {cout<<"sorry,size different!"<<endl;return false;}
else{
int i;
for(i=0;i<max_size;i++){
cout<<a.item(i)<<' '<<array[i]<<endl;
if(a.item(i)!=array[i])
return false;
}
if(i==max_size) return true;
}
}
void enlarge(int delta){
int *temp = new int(max_size*sizeof(int));
for(int i=0;i<max_size;i++)
temp[i] = array[i];
max_size +=delta;
array = new int(max_size*sizeof(int));
memset(array,0,sizeof(int)*max_size);
for(int i=0;i<max_size - delta;i++)
array[i] = temp[i];
}
void sort(){
for(int i=max_size;i>0;i--){
for(int j=0;j<i-1;j++){
if(array[j]>array[j+1]){
swap(array[i],array[j+1]);
}
}
}
}
*/
void display(){
for(int i=0;i<max_size;i++)
cout<<array[i]<<' ';
cout<<endl;
}
private:
int max_size;
int *array;
};
int main()
{
IntArray a1(10);
IntArray a2(10);
a1.display();
a2.display();
//cout<<a1.item(3)<<endl;
//if(a1.equal(a2)) cout<<"a1==a2"<<endl;
//else cout<<"a1!=a2"<<endl;
return 0;
}
0 0 0 19 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
怎么会出现一个19?明明已经初始化为0了 数组类 初始化
[解决办法]
分配的写法不对,
array = new int(max_size*sizeof(int));
应该改为:
array = new int[max_size];