// ==========================================================================
// $Id: function_construct.cpp,v 1.2 2006/11/09 14:36:46 jlang Exp $
// CSI2372 example Code for lecture 5
// ==========================================================================
// (C)opyright:
//
//   Jochen Lang
//   SITE, University of Ottawa
//   800 King Edward Ave.
//   Ottawa, On., K1N 6N5
//   Canada. 
//   http://www.site.uottawa.ca
// 
// Creator: jlang (Jochen Lang)
// Email:   jlang@site.uottawa.ca
// ==========================================================================
// $Log: function_construct.cpp,v $
// Revision 1.2  2006/11/09 14:36:46  jlang
// return value
//
// Revision 1.1  2006/10/02 01:52:09  jlang
// More constructor examples added
//
// Revision 1.1  2006/09/23 00:00:55  jlang
//
// ==========================================================================
#include <iostream>

using std::cout;
using std::endl;

class Point2D {
  double d_x;
  double d_y;
public:
  Point2D( double _x=0.0, double _y=0.0 );
  double getX();
};

/**
 * Point2D - All argument constructor
 */
Point2D::Point2D( double _x, double _y ) :
  d_x(_x), d_y(_y) {
  cout<< "Point2D: " << d_x << " " << d_y << endl;
}

double Point2D::getX() {
  return d_x;
}

double fn(Point2D pt) { 
  return pt.getX(); 
}

int main() {
  cout << "Result of fn(1): " << fn(1) << endl;
  return 0; 
}

