Copy Constructor # 2


/* 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;

}
Custom Search