为什么出现这样的结果


#include<iostream>
#include<string>
using namespace std;
class person
{
public:
    person(int c, int d) :a(c), b(d)
    {

    }
    int a;
    int b;
};
void operator<<(ostream& out, person& p)
{
    out << p.a << endl;
    out << p.b << endl;
    //return out;
}
person operator+(person &p1, person &p2)
{
    person p3(0,0);
    p3.a = p1.a + p2.a;
    p3.b = p1.b + p2.b;
    return p3;
}

void test()
{
    person p1(10, 20);
    person p2(10, 20);
    person p3(0, 0);
    operator+ (p1, p2);
    p3 = p1 + p2;
    operator<<(cout, p3);
    cout << p3 ;
}

int main()
{
    test();
    return 0;
}

img


上面这段代码为什么出现这样的结果

就是输出p1+p2

 
void test()
{
    person p1(10, 20);
    person p2(10, 20);
    person p3(0, 0);
    p3 = p1 + p2;
    cout << p3 ;
}