#include <iostream>
#include<string>
using namespace std;
class Array{
public:
Array(){length=0;num=NULL;};
Array(int );
int &operator[](int );
const int &operator [](int ) const;
int getlength() const {return length;};
private:
int length;
int *num;
};
Array::Array(int n) {
try{
num=new int [n];
}
catch(bad_alloc)
{
cerr<<"allocate storage failure"<<endl;
throw;
}
length =n;
}
int &Array::operator[](int i) {
if (i<0 || i>length)
throw string("out of bounds");
return num[i];
}
const int &Array::operator[](int i) const {
if (i<0 || i>length)
throw string("out of bounds");
return num[i];
}
int main(){
Array A(5);
int i ;
try{
for (i=0;i<A.getlength();i++)
A[i]=i;
for (i=0;i<6;i++)
cout<<A[i]<<endl;
}
catch (string s)
{
cerr<<s<<",i ="<<i<<endl;
}
return 0;
}