重载 Ostream 运算符

Overloading Ostream operator

我发现当我在 class 或结构中创建 ostream 运算符时 它只接受一个参数,因为第二个是 This 指针 所以我尝试这样做,但它不起作用

P.S 我知道我应该在 class 或结构之外创建它作为一个自由函数但我试图理解为什么?

struct Vector2 
{
    float x,y ; 
    Vector2(float ax , float ay )
    {
        x = ax ; 
        y = ay ; 
    }
    std:: ostream&  operator<< (std::ostream&  stream )
    { 
        return stream <<this->x<< " , "<< this->y ; 
    }
}

<<重载时,a << b表示要么

operator<<(a,b)

如果重载是一个自由函数,或者

a.operator<<(b)

如果是会员。

即定义为成员的运算符,左边参数为*this,需要写

Vector2 v;
v << std::cout;

相当于

Vector2 v;
v.operator<<(std::cout);