Dev C++ 4.9.9.2问题
下面的程序是一个安全数组 问2个问题
当只创建一个对象时 没有任何问题 可是在加一个就会出错
例如将主函数改为
int main()
{
Array a(7);
Array b(7);
cin>>a;
cout<<a;
cout<<a.getSize();
cin>>b;
cout<<b;
system("pause");
return 0;
}
不知道为什么 请大家帮忙看看
我用的编译器是Dev C++ 4.9.9.2
// Driver for simple class array1
#include <iostream>
#include <iomanip>
using std::cout;
using std::cin;
using std::endl;
using std::ostream;
using std::istream;
using std::setw;
//#include "array1.cpp"
class Array
{
friend ostream &operator<< (ostream &, const Array &);
friend istream &operator>> (istream &, Array &);
public:
Array(int As=10);
Array(const Array &);
~Array();
int getSize()const;
const Array &operator=(const Array &);
bool operator==(const Array &) const;
bool operator!=(const Array &right) const
{
return !(*this==right);
}
int &operator[](int);
const int &operator[](int) const;
static int getArrayCount();
private:
int size;
int *ptr;
static int arrayCount;
};
int Array::arrayCount=0;
Array::Array(int As)
{
size=(As>0? As:10);
assert(ptr!=0);
++arrayCount;
for(int i=0;i<size;i++)
ptr[i]=0;
}
Array::Array(const Array &init):size(init.size)
{
ptr=new int[size];
assert(ptr!=0);
++arrayCount;
for(int i=0;i<size;i++)
ptr[i]=init.ptr[i];
}
Array::~Array()
{
delete[] ptr;
--arrayCount;
}
int Array::getSize() const
{
return size;
}
const Array &Array::operator=(const Array &right)
{
if(&right!=this)
{
if(size!=right.size)
{
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;
}
bool Array::operator==(const Array &right) const
{
if (size!=right.size)
return false;
for(int i=0;i<size;i++)
if(ptr[i]!=right.ptr[i])
return false;
return true;
}
int &Array::operator[](int subscript)
{
assert(0<=subscript && subscript<size);
return ptr[subscript];
}
istream &operator >>(istream &input, Array &a)
{
for(int i=0;i<a.size; i++)
input>>a.ptr[i];
return input;
}
ostream &operator <<(ostream &output,const Array &a)
{
int i;
for(i=0;i<a.size;i++)
{
output<<setw(12)<<a.ptr[i];
if((i+1)%4==0)
output<<endl;
}
if(i%4!=0)
output<<endl;
return output;
}
int main()
{
Array a(7);
cin>>a;
cout<<a;
cout<<a.getSize();
system("pause");
return 0;
}