I create the class 'Point', overload the operator '+' between 2 Point object and the operator '<<' to show the Point object. I can't compile and run the code. The error is that there is no operator "<<" matched. This is occured to "cout << "p3: " << (p1+p2) << endl;"
 class Point {
    public:
        Point(int x=0, int y=0) : _x(x), _y(y) {};
        Point operator +(Point &p);
        int getX() {
            return _x;
        }
        int getY() {
            return _y;
        }
        friend ostream& operator <<(ostream& out, Point &p);
    private:
        int _x, _y;
    };
    Point Point::operator +(Point &p) {
        Point np(this->_x+p.getX(), this->_y+p.getY());
        return np;
    }
    ostream& operator <<(ostream &out, Point &p) {
        out << '(' << p._x << ',' << p._y << ')';
        return out;
    }
    int main() {
        Point p1(1, 2);
        Point p2;
        cout << "p1: " << p1 << endl;
        cout << "p2: " << p2 << endl;
        cout << "p3: " << (p1+p2) << endl;
        system("pause");
        return 0;
    }
 
     
     
    