// ========================================================================== // $Id: construct_example.cpp,v 1.2 2008/10/15 19:18:59 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: construct_example.cpp,v $ // Revision 1.2 2008/10/15 19:18:59 jlang // Added construction via temporary // // 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 using std::cout; using std::endl; class Point2D { double d_x; double d_y; public: Point2D( double _x=0.0, double _y=0.0 ); Point2D( const Point2D& _oPoint ); }; /** * Point2D - All argument constructor */ Point2D::Point2D( double _x, double _y ) { d_x = _x; d_y = _y; cout << "Executing var. arg. constructor!" << endl; } /** * Point2D - copy constructor * Same as synthesized -- for print statement only */ Point2D::Point2D( const Point2D& _oPoint ) : d_x( _oPoint.d_x ), d_y( _oPoint.d_y ) { cout << "Executing copy constructor!" << endl; } int main() { cout << "Various calls to constructors: " << endl; // call to default constructor Point2D pt1; // via temporary Point2D p4 = Point2D(); // call to copy constructor Point2D pt2 = pt1; // call to copy constructor but no temporary Point2D pt3(pt1); }