2010-06-21 27 views
6

如在,应该运营商>>匹配运营商< <?你应该为运算符<<格式化吗?

数据库的例子:

如果操作>>在以下格式的东西上写着:

2 
Joe 500 20 1 
Bob 250 30 0 

若驾驶员< <输出?或者像这样:

Record: 1/2 
Name: Joe 
Balance: 500 
Transactions: 20 
Premium Account: Yes 

然后有一个单独的writeFile()函数?

我知道要么会工作,但什么是“公认的标准”?

回答

7

如果你有一个istream operator>>重载读取特定格式的数据的类型,那么如果你为同一类型实现一个重载的输入,它应该输出相同的格式(否则,它可能会变得相当混乱)。

3

这种操作符重载是IMO的一个很大的误用和误解。 使用重载,它真的有一定意义。

出于调试目的,请toString()并覆盖< <来调用它。 请勿重写>>。

>><<通常用于发送序列化数据到流,而不是用于与用户通信。

我的2欧元。

+2

我不同意:如果你打算从流中读取或写入数据,那么重载“流操作符”既简单又习惯。 – 2010-06-21 01:51:49

+0

你是对的 - 当我写这篇文章时,我将这个添加到我的答案中:) – 2010-06-21 01:52:53

0

两个或彼此独立,根据你的意愿,你可以超载他们。

+1

我认为OP知道这一点。他在问这是否是个好主意。例如,您可以重载&&,但通常您应该避免这样做。 – 2010-06-21 02:36:47

+0

@比利 你,你是正确的。但重写<<对于频繁检查(当你正在编码时)总是有好处的。 – prabhakaran 2010-06-21 04:22:24