Dynamic int array : New « Language « C++






Dynamic int array

Dynamic int array
#include <iostream>
#include <cstdlib>
using namespace std;

class DynamicIntArray {
  int *p;
  int size;
public:
  DynamicIntArray(int s);
  DynamicIntArray &operator=(DynamicIntArray &ob);
  int &operator[](int i);
};

DynamicIntArray::DynamicIntArray(int s)
{
  p = new int [s];
  if(!p) {
    cout << "Allocation error\n";
    exit(1);
  }

  size = s;
}

// Overload =
DynamicIntArray &DynamicIntArray::operator=(DynamicIntArray &ob)
{
  int i;

  if(size!=ob.size) {
    cout << "Cannot copy arrays of differing sizes!\n";
    exit(1);
  }

  for(i = 0; i <size; i++) p[ i ] = ob.p[ i ];
  return *this;
}

// Overload []
int &DynamicIntArray::operator[](int i)
{
  if(i <0 || i>size) {
    cout << "\nIndex value of ";
    cout << i << " is out-of-bounds.\n";
    exit(1);
  }
  return p[ i ];
}

int main()
{
  int i;

  DynamicIntArray object1(10), object2(10), object3(100);

  object1[3] = 10;
  i = object1[3];
  cout << i << endl;

  object2 = object1;

  i = object2[3];
  cout << i << endl;

  // generates an error
  object1 = object3; //  arrays differ sizes
  return 0;
}


           
       








Related examples in the same category

1.Use new to allocate memory for primitive typeUse new to allocate memory for primitive type
2.Use new to allocate memory for a class and check errorUse new to allocate memory for a class and check error
3.Pointer for double and use new to allocate memoryPointer for double and use new to allocate memory
4.Demonstrate the new(nothrow) alternative.Demonstrate the new(nothrow) alternative.
5.Handle exceptions thrown by new.Handle exceptions thrown by new.
6.Force an allocation failure.Force an allocation failure.
7.Watch for allocation errors using both old-style and new-style error handling.