重载 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);
我发现当我在 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);