/* This program
creates a "safe" array class. Since space
for the array is
allocated using new, a copy constructor
is provided to
allocate memory when one array object is
used to
initialize another.
*/
#include <iostream.h>
#include <conio.h>
//using
namespace std;
class array
{
int *p;
int size;
public:
array(int
sz)
{
p = new int[sz];
size = sz;
}
~array()
{
delete [] p;
}
// copy
constructor
array(const
array &a);
void put(int i, int j)
{
if(i>=0 &&
i<size) p[i] = j;
}
int get(int i)
{
return p[i];
}
};
// Copy
Constructor
array::array(const array &a)
{
int i;
p = new int[a.size];
for(i=0; i<a.size; i++) p[i]
= a.p[i];
}
int main()
{
clrscr();
array num(10);
int i;
for(i=0; i<10; i++)
num.put(i, i);
for(i=9; i>=0; i--) cout
<< num.get(i);
cout << "\n";
// create another array and
initialize with num
array x(num); // invokes copy constructor
for(i=0; i<10; i++) cout
<< x.get(i);
getch();
return 0;
}