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: