//数组头文件:Array.h
#ifndef ARRAR_H
#define ARRAR_H
#include<iostream>
using namespace std;
class Array{
private:
int size;
int *ptr;
public:
friend istream &operator>>(istream &,Array &);
friend ostream &operator<<(ostream &,const Array &);
Array(int =3);
Array (const Array &);
~Array();
int getsize()const;
const Array &operator=(const Array &);
bool operator ==(const Array &)const;
bool operator!=(const Array &r)const{
return !(*this==r);
}
int &operator[](int);
int operator[](int)const;
};
#endif // ARRAR_H_INCLUDED
//实现Array.cpp
#include<iostream>
#include "Array.h"
#include<iomanip>
#include<cstdlib>
using namespace std;
Array::Array(int s)
{
size=(s>0?s:3);
ptr=new int[size];
for(int i=0; i<size; i++)
ptr[i]=0;
}
Array::Array(const Array &a):size(a.size)
{
ptr=new int[size];
for(int i=0; i<size; i++)
ptr[i]=a.ptr[i];
}
Array::~Array()
{
delete []ptr;
}
int Array::getsize()const
{
return size;
}
const Array &Array::operator=(const Array & a)
{
if(&a!=this)
{
if(size!=a.size)
{
delete []ptr;
size=a.size;
ptr=new int[size];
}
for(int i=0; i<size; i++)
ptr[i]=a.ptr[i];
}
return *this;
}
bool Array::operator ==(const Array &a)const
{
if(size!=a.getsize())
return false;
for(int i=0; i<size; i++)
if(ptr[i]!=a.ptr[i])
return false;
return true;
}
int &Array::operator[](int a)
{
if(a<0||a>size)
{
cout<<"out of range error"<<endl;
exit(1);
}
return ptr[a];
}
int Array::operator[](int a)const
{
if(a<0||a>size)
{
cout<<"out of range error"<<endl;
exit(1);
}
return ptr[a];
}
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)
{
for(int i=0;i<a.size;i++)
{
output<<setw(12)<<a.ptr[i];
if(i%4==0&&i!=0)
output<<endl;
}
return output;
}
//调用 main.cpp
#include <iostream>
#include <fstream>
#include <cstring>
#include"Array.h"
using namespace std;
int main()
{
Array a(4);
Array b;
cout<<a.getsize()<<endl;
cin>>a>>b;
cout<<"a:"<<a<<endl;
cout<<"b:"<<b<<endl;
cout<<"a==b?"<<(a==b)<<endl;
cout<<"a!=b?"<<(a!=b)<<endl;
cout<<"a=b"<<(a=b)<<endl<<"a:"<<a<<endl;
cout<<"a==b?"<<(a==b)<<endl;
}