#include <iostream>

#include <cstdlib>



#include "Point.h"



using namespace std;



int main(int argc, char **argv) {

  int stack_int;      // stack-allocated int.

  int *heap_int = new int;  // heap-allocated, uninitialized int

  int *heap_init_int = new int(12);  // heap-allocated, initialized to 12



  int stack_arr[10];  // stack-allocated array of 10 uninitialized ints

  int *heap_arr = new int[10];  // heap-alloc'ed array of 10 uninital. ints



  // initialize array elements to zeros.

  int *heap_init_arr = new int[10]();  // heap-alloc array of 10 ints



  // error, can only initialize arrays using default constructor.

  int *heap_init_error = new int[10](12);



  Point stack_point(1,2);  // stack-allocated Point object.

  Point *heap_point = new Point(1,2);  // heap allocated Point object.



  // would be OK if we had a default constructor for Points, but

  // since we don't, the compiler complains.

  Point *error_point_arr = new Point[10];  // heap-alloc, initialized.



  // error, can only initialize arrays using default constructor.

  Point *error2_point_arr = new Point[10](1,2);



  delete heap_int;         // correct

  delete heap_init_int;    // correct

  delete heap_point;       // correct

  delete heap_arr;         // incorrect!  should be delete[] heap_arr.

  delete[] heap_init_arr;  // correct



  return EXIT_SUCCESS;

}