重载输入操作符

时间:2011-10-12 21:59:24

标签: c++ input operator-overloading

我有一个输入操作符的函数原型,但我不确定它们是什么以及它们是什么意思,我认为istream是一个类型为stream& sourceFileStream的对象是通过引用传递的。有人可以解释每个参数的含义吗?

istream& operator >>(istream &sourceFileStream, Chart &aChart)

2 个答案:

答案 0 :(得分:0)

istream是输入流:http://www.cplusplus.com/reference/iostream/istream/

sourceFileStreamaChart都是通过引用传递的。

答案 1 :(得分:0)

istream&是返回类型,它在函数完成后通过引用返回sourceFileStream参数。

这样做就可以链接运算符(在同一语句中多次使用它们)。

你更熟悉链接输出运算符我敢打赌......所以,例如,你可以使用<<操作员多次在这一行:

int x;
std::cerr << std::hex << x << std::endl;

因为它返回一个引用,所以它正在操作的流(cerr)。

istream& sourceFileStream作为参数是输入流(读取文件或类似的东西)。它通过引用传递,因此您正在修改传入的流,然后返回它,原因如上所述(最有可能通过在读取中向前读取并移动其内部指针来修改它)。

您也通过引用传递图表对象,最有可能从流内容中填充其内部数据成员。因此,在使用此运算符结束时,将按照此函数定义中指定的流内容填充图表的成员。 PS:通过引用意味着传递给此函数的对象将被直接修改,因为aChart将是该对象的别名。如果它不是通过引用,那么该对象的副本将被修改,并且该函数将是无用的。