#include using namespace std; #include "Array.h" //default constructor for Array class (default size specified) Array::Array(int arraySize) { if (arraySize < 0) { arraySize = 10; } this->size = arraySize; ptr = new int[arraySize]; for (int i = 0; i < size; i++) { ptr[i] = 0; } } //destructor for class Array Array::~Array() { delete [] ptr; ptr = NULL; } //return number of elements of Array int Array::getSize() const { return size; } int Array::get(int index) const { if (index < size && index >=0) { return ptr[index]; //*(ptr + index) } return -1; } void Array::set(int index, int value) { if (index < size && index >=0) { ptr[index] = value; } } //print the contents of the array void Array::print() const { for (int i = 0; i < size; i++) { cout << ptr[i]; if (i < (size -1)) { cout << ", "; } } cout << endl; } //copy constructor for Array class //must receive a reference to prevent infinite recursion Array::Array(const Array &arrayToCopy) { cout << "You are in copy constructor." << endl; size = arrayToCopy.getSize(); ptr = new int[size]; for (int i = 0; i < size; i++) { this->ptr[i] = arrayToCopy.get(i); } } //overloaded assignment operator //const return avoids (a1 = a2) = a3 const Array& Array::operator=(const Array &right) { cout << "You are inside operator= method." << endl; if (this != &right) { if (size != right.size) { delete [] ptr; size = right.size; ptr = new int[size]; } for (int i = 0; i < size; i++) { ptr[i] = right.get(i); } } return *this; }