#include <iostream>
#include <cstdlib>
using namespace std;
class DynamicIntArray {
int *p;
int size;
public:
DynamicIntArray(int s);
DynamicIntArray &operator=(DynamicIntArray &ob);
int &operator[](int i);
};
DynamicIntArray::DynamicIntArray(int s)
{
p = new int [s];
if(!p) {
cout << "Allocation error\n";
exit(1);
}
size = s;
}
// Overload =
DynamicIntArray &DynamicIntArray::operator=(DynamicIntArray &ob)
{
int i;
if(size!=ob.size) {
cout << "Cannot copy arrays of differing sizes!\n";
exit(1);
}
for(i = 0; i <size; i++) p[ i ] = ob.p[ i ];
return *this;
}
// Overload []
int &DynamicIntArray::operator[](int i)
{
if(i <0 || i>size) {
cout << "\nIndex value of ";
cout << i << " is out-of-bounds.\n";
exit(1);
}
return p[ i ];
}
int main()
{
int i;
DynamicIntArray object1(10), object2(10), object3(100);
object1[3] = 10;
i = object1[3];
cout << i << endl;
object2 = object1;
i = object2[3];
cout << i << endl;
// generates an error
object1 = object3; // arrays differ sizes
return 0;
}
|