|       | constructors/reordered/prog3.cc - Use of constructors - with local variables of class type. | Lecture 4 - slide 8 : 40 Program 3 | 
//Point(): (0,7)        Point(double x): (x, 20)      Point(double x, double y): (x, y)       Point(Point& p) (p.x+1, p.y+2) 
//Reveal...
#include <iostream>
#include "point.h"
using namespace std;
int f(){
  Point p;
  cout << "Point p: " << p << endl;   // (0,7)
  
  Point r(11.0, 12.0);
  cout << "Point r: " << r << endl;   // (11,12)
  Point q;
  q = r;                              // default assignment - bit-wise copying, no use of copy constructor
  cout << "Point q: " << q << endl;   // (11,12)
  Point s(p);                         // The copy constructor used. p is (0,7) at this location.
  cout << "Point s: " << s << endl;   // (1,9)
  Point t(3.0);                       // Point(double) used
  cout << "Point t: " << t << endl;   // (3,20)
  Point u = t;                        // Another way to use the copy constructor, via an initializer. t is (3,20).
  cout << "Point u: " << u << endl;   // (4,22)
  Point v{t};                         // Same. t is (3,20).
  cout << "Point v: " << v << endl;   // (4,22)
  Point ap[10];                       // The default constructor used 10 times
  for(int i = 0; i < 10; i++)         
     cout << "ap[" << i <<            // (0,7) ten times
     "]: " << ap[i] << endl;  
}
int main(){
  f();
}