#include #include #include "point1.h" using namespace std; int main(){ Point p1, p2; // Both (0, 7) Tripple t1; // (0, 0, 0) cout << "t1: " << t1 << endl; // [0, 0, 0] t1 = p2; // Tripple constructor on Point is used. // p2 = (0,7) is copied into the constructor, using Point copy constructor: (1,9) // This point is passed into the Tripple(Point) constructor. t1 becomes (1,9,0). p1 = t1; // Tripple t1 = (1,9,0) converted to Point using conversion operator Point in // class Tripple: (1, 9). // This point is - surprise - converted to double via the double conversion operator // in class Point: 10 // This double is converted to a Point using Point(double) constructor // (10, 20). // In summary: [1,9,0] -> (1,9) -> 10 -> (10,20). cout << "t1: " << t1 << endl; // [1, 9, 0] cout << "p1: " << p1 << endl; // (10, 20) }