which function to call at compile time Overloaded function operator<<() only looks at pointer type (Point2D), not what it points to (Point3D object) Point3D point(3, 4, 5); cout<<point; //(3, 4, 5) Point2D *pointer2D = &point; cout<<*pointer2D; //(3, 4)