重载 istream >> 没有 return
Overload istream >> without return
我是一名学生,对 c++ 还很陌生。我创建了一个 Class Vector2D 并重载了 istream 运算符。我通过以下两种方式做到了:
friend void operator >> (istream& is, Vector& v);
friend istream& operator >>(istream& is, Vector&v);
void operator >> (istream& is, Vector& v)
{
is >> v.x >> v.y;
}
istream& operator >> (istream& is, Vector& v)
{
is >> v.x >> v.y;
return is;
}
两种方式都做了同样的事情(对我来说),我不知道为什么我应该 return 一个 istream 参考。我的意思是,我不关心 istream 对象,我只需要它来初始化我的对象。 return 这样做的原因是什么?
因为流式运算符可以链接,即
std::cin >> a >> b;
如果不返回引用,这是不可能的。
我是一名学生,对 c++ 还很陌生。我创建了一个 Class Vector2D 并重载了 istream 运算符。我通过以下两种方式做到了:
friend void operator >> (istream& is, Vector& v);
friend istream& operator >>(istream& is, Vector&v);
void operator >> (istream& is, Vector& v)
{
is >> v.x >> v.y;
}
istream& operator >> (istream& is, Vector& v)
{
is >> v.x >> v.y;
return is;
}
两种方式都做了同样的事情(对我来说),我不知道为什么我应该 return 一个 istream 参考。我的意思是,我不关心 istream 对象,我只需要它来初始化我的对象。 return 这样做的原因是什么?
因为流式运算符可以链接,即
std::cin >> a >> b;
如果不返回引用,这是不可能的。