Figure 2: Implementation of IArray class

// The implementation of the IArray class

#ifndef IARRAY2_H
#include "iarray2.h"
#endif

// Default constructor
IArray::IArray (const int sz)
: size (sz)
{
   // Allocate an integer array of size elements
   data = new int [ size ];

   // Initialize the array to zero
   for (int i = 0; i < size; i++)
      data[i] = 0;
}

// Alternative constructor
IArray::IArray (const int *a, int sz)
{
   Init (a, sz);
}

// Copy constructor
IArray::IArray (const IArray& a)
{
   Init (a.data, a.size);
}

// Destructor
IArray::~IArray()
{
   delete [] data;
}

// Array initialization
void IArray::Init (const int* a, int sz)
{
   size = sz;
   data = new int [size];
   
   for (int i = 0; i < size; i++)
      data[i] = a[i];
}
// Assignment operator
IArray&  IArray::operator= (const IArray& a)
{
   // Do not assign to self
   if (this != &a)
   {
      // Delete old data
      delete [] data;

      // Allocate new data
      Init (a.data, a.size);   
   }

   return *this;
} 

// Subscript operator
int&  
IArray::operator[] (int index)
{
   return data[index];
} 

// Size 
int 
IArray::Size () const
{
   return size;
} 

// Output operator
ostream&
operator<< (ostream& os, const IArray& a)
{
   for (int i=0; i < a.size; i++)
   {
      os << "[";
      os.width(2);  os << i;
      os << "]: ";
      os.width(3);  os << a.data[i];
      os << endl;
   }
   
   return os;
}

© Copyright 2000-2004 by ACM, Inc.

Page hits since December 20, 1999: