第1个回答 2019-05-28
你的Array类建在哪儿的,贴出来噻
#include
"Array1.h"
我按你的题加了个类,发现你里面有比较多的错误,现在能运行了,不过你得按你的目的改一下
//ARRAY.CPP
//定义类Array的成员函数
#include
<iostream.h>
#include
<stdlib.h>
#include
<assert.h>
class
Array{
private:
int
size,*ptr;
public:
static
int
arrayCount;
int
getArrayCount();
Array(int
arraySize=10);
Array(const
Array
&init);
~Array();
int
getSize()const;
int
&operator[](int);
int
operator==(const
Array
&right)const;
Array
&operator=(Array
&right);
friend
istream
&operator>>(istream
&input,Array
&a);
friend
ostream
&operator<<(ostream
&output,
Array
&a);
};
int
Array::arrayCount=0;
//初始化文件作用域内的静态数据成员
//此时还没生成对象,是在类中定义
int
Array::getArrayCount(){return
arrayCount;}//初始化静态成员函数,返回实例化的数组
//对象的个数
Array::Array(int
arraySize)
//定义类Array的默认构造函数
{
++arrayCount;
//对象计数加1
size=arraySize;
//数组默认大小为10
ptr=new
int[size];
//为数组分配内存空间
assert(ptr!=0);
//分配不成功是时中止
for(int
i=0;i<size;i++){ptr[i]=0;}
//对数组初始化
}
Array::Array(const
Array
&init)
//定义类Array的拷贝构造函数
{
++arrayCount;
//对象计数加1
size=init.size;
//指定对象的大小
ptr=new
int[size];
//为数组分配内存空间
assert(ptr!=0);
//内存空间分配成功时继续执行
for(int
i=0;i<size;i++){ptr[i]=init.ptr[i];}
//把初始化值拷贝到对象中
}
Array::~Array()
//析构函数
{
--arrayCount;
//对象计数减1
delete
[]ptr;
//回收分配给数组的内存空间
}
int
Array::getSize()const
{return
size;}
//获取数组的大小
int
&Array::operator[](int
subscript)
//重载下标运算符
{
assert(0<=subscript&&subscript<size);
//检测下标运算错误
return
ptr[subscript];
//返回的引用可用做左值
}
int
Array::operator==(const
Array
&right)const
//判断两个数组是否相等。若相等,
//返回1,否则返回0
{
if(size!=right.size){return
0;}
//数组大小不相等
for(int
i=0;i<size;i++)
{
if(ptr[i]!=right.ptr[i]){return
0;}
//数组不相等
}
return
1;
//数组相等
}
/*int
Array::operator!=(const
Array
&right)const
//判断两个数组是否不相等。如不相
//等,返回1,否则返回0
{
if(size!=right.size){return
1;}
//数组大小不相等
for(int
i=0;i<size;i++)
{
if(ptr[i]!=right.ptr[i]){return
1;}
//数组不相等
else
return
0;
//数组相等
}
*/
Array
&Array::operator=(Array
&right)
//重载赋值运算符
{
if(this!=&right)
//检查是否自我赋值
{
delete
[]ptr;
//回收内存空间
size=right.size;
//指定对象的大小
ptr=new
int[size];
//为数组拷贝分配空间
assert(ptr!=0);
//内存分配不成功时中止
for(int
i=0;i<size;i++)
ptr[i]=right.ptr[i];
//把数组拷贝到对象中
}
return
(*this);
//使其能连续执行x=y=z
}
istream
&operator>>(istream
&input,Array
&a)
//重载用于类Array的输入运算符,
//为整个数组赋值
{
for(int
i=0;i<a.size;i++){input>>a.ptr[i];}
return
input;
//使其能连续执行cin>>x>>y
}
ostream
&operator<<(ostream
&output,
Array
&a)
//重载用于类Array的输出运算符
{
for(int
i=0;i<a.size;i++){output<<a.ptr[i];}
//建立两个数组并打印数组计数
return
output;
}
//主函数*****************************************
int
main()
{
Array
integers1(7),integers2;
integers1.getSize();
integers2.getSize();
cout<<"\nArray
after
initilization:\n"<<integers2<<endl;
cin>>integers1>>integers2;
cout<<"integers1:"<<integers1<<endl;
cout<<"integers2:"<<integers2<<endl;
Array
integers3(integers1);
//用integers1作为初始化值建立数组integers3
integers3.getSize();
cout<<"\nArray
after
initialization:\n"<<integers3<<endl;
integers1=integers2;
cout<<"integers1:"<<integers1<<endl;
cout<<"integers2:"<<integers2<<endl;
if(integers1==integers2)
cout<<"integers1[5]is"<<integers1[5]<<endl;
//用重载的下标建立右值
integers1[5]=1000;
integers1[15]=1000;
//错误:下标越界
return
0;
}
第2个回答 2020-01-14
你的Array类建在哪儿的,贴出来噻
#include
"Array1.h"
我按你的题加了个类,发现你里面有比较多的错误,现在能运行了,不过你得按你的目的改一下
//ARRAY.CPP
//定义类Array的成员函数
#include
<iostream.h>
#include
<stdlib.h>
#include
<assert.h>
class
Array{
private:
int
size,*ptr;
public:
static
int
arrayCount;
int
getArrayCount();
Array(int
arraySize=10);
Array(const
Array
&init);
~Array();
int
getSize()const;
int
&operator[](int);
int
operator==(const
Array
&right)const;
Array
&operator=(Array
&right);
friend
istream
&operator>>(istream
&input,Array
&a);
friend
ostream
&operator<<(ostream
&output,
Array
&a);
};
int
Array::arrayCount=0;
//初始化文件作用域内的静态数据成员
//此时还没生成对象,是在类中定义
int
Array::getArrayCount(){return
arrayCount;}//初始化静态成员函数,返回实例化的数组
//对象的个数
Array::Array(int
arraySize)
//定义类Array的默认构造函数
{
++arrayCount;
//对象计数加1
size=arraySize;
//数组默认大小为10
ptr=new
int[size];
//为数组分配内存空间
assert(ptr!=0);
//分配不成功是时中止
for(int
i=0;i<size;i++){ptr[i]=0;}
//对数组初始化
}
Array::Array(const
Array
&init)
//定义类Array的拷贝构造函数
{
++arrayCount;
//对象计数加1
size=init.size;
//指定对象的大小
ptr=new
int[size];
//为数组分配内存空间
assert(ptr!=0);
//内存空间分配成功时继续执行
for(int
i=0;i<size;i++){ptr[i]=init.ptr[i];}
//把初始化值拷贝到对象中
}
Array::~Array()
//析构函数
{
--arrayCount;
//对象计数减1
delete
[]ptr;
//回收分配给数组的内存空间
}
int
Array::getSize()const
{return
size;}
//获取数组的大小
int
&Array::operator[](int
subscript)
//重载下标运算符
{
assert(0<=subscript&&subscript<size);
//检测下标运算错误
return
ptr[subscript];
//返回的引用可用做左值
}
int
Array::operator==(const
Array
&right)const
//判断两个数组是否相等。若相等,
//返回1,否则返回0
{
if(size!=right.size){return
0;}
//数组大小不相等
for(int
i=0;i<size;i++)
{
if(ptr[i]!=right.ptr[i]){return
0;}
//数组不相等
}
return
1;
//数组相等
}
/*int
Array::operator!=(const
Array
&right)const
//判断两个数组是否不相等。如不相
//等,返回1,否则返回0
{
if(size!=right.size){return
1;}
//数组大小不相等
for(int
i=0;i<size;i++)
{
if(ptr[i]!=right.ptr[i]){return
1;}
//数组不相等
else
return
0;
//数组相等
}
*/
Array
&Array::operator=(Array
&right)
//重载赋值运算符
{
if(this!=&right)
//检查是否自我赋值
{
delete
[]ptr;
//回收内存空间
size=right.size;
//指定对象的大小
ptr=new
int[size];
//为数组拷贝分配空间
assert(ptr!=0);
//内存分配不成功时中止
for(int
i=0;i<size;i++)
ptr[i]=right.ptr[i];
//把数组拷贝到对象中
}
return
(*this);
//使其能连续执行x=y=z
}
istream
&operator>>(istream
&input,Array
&a)
//重载用于类Array的输入运算符,
//为整个数组赋值
{
for(int
i=0;i<a.size;i++){input>>a.ptr[i];}
return
input;
//使其能连续执行cin>>x>>y
}
ostream
&operator<<(ostream
&output,
Array
&a)
//重载用于类Array的输出运算符
{
for(int
i=0;i<a.size;i++){output<<a.ptr[i];}
//建立两个数组并打印数组计数
return
output;
}
//主函数*****************************************
int
main()
{
Array
integers1(7),integers2;
integers1.getSize();
integers2.getSize();
cout<<"\nArray
after
initilization:\n"<<integers2<<endl;
cin>>integers1>>integers2;
cout<<"integers1:"<<integers1<<endl;
cout<<"integers2:"<<integers2<<endl;
Array
integers3(integers1);
//用integers1作为初始化值建立数组integers3
integers3.getSize();
cout<<"\nArray
after
initialization:\n"<<integers3<<endl;
integers1=integers2;
cout<<"integers1:"<<integers1<<endl;
cout<<"integers2:"<<integers2<<endl;
if(integers1==integers2)
cout<<"integers1[5]is"<<integers1[5]<<endl;
//用重载的下标建立右值
integers1[5]=1000;
integers1[15]=1000;
//错误:下标越界
return
0;
}
第3个回答 2009-09-04
int Array::operator==(const Array &right)const //判断两个数组是否相等。若相等,
//返回1,否则返回0
{
if(size!=right.size){return 0;} //数组大小不相等
for(int i=0;i<size;i++)
{
if(ptr[i]!=right.ptr[i]){return 0;} //数组不相等
}
return 1;
}
就改一个 重载格式不太对 无所谓了 还是可以运行