/* Array1.h  --  Array class for storing arrays of integers */
#ifndef ARRAY1_H
#define ARRAY1_H

#include <iostream>
using namespace std;


class Array {
  int size;                  // array size
  int *ptr;                  // pointer to first element of array

public:
  Array(int = 10);           // default constructor
  Array(const Array&);       // copy constructor
  ~Array();                  // destructor
  int getSize() const;       // return size

  // Assignment operator
  const Array &operator=(const Array&);

  // Equality operator
  bool operator==(const Array&) const;

  // Inequality operator; returns opposite of == operator
  bool operator!=(const Array& right) const {
    return !(*this == right);  // invokes Array::operator==
  }

  // Subscript operator for non-const objects returns lvalue
  int& operator[](int);

  // subscript operator for const objects returns rvalue
  const int& operator[](int) const;

  friend ostream& operator<<(ostream&, const Array&);
  friend istream& operator>>(istream&, Array&);
};


#endif
