你应该格式化运算符<<课程?

时间:2010-06-21 01:42:49

标签: c++ class operators standards

如同运营商>>匹配运算符<< ?

数据库示例:

如果运营商>>读取以下格式的内容:

2
Joe 500 20 1
Bob 250 30 0

运营商应该<<输出那个?或类似的东西:

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

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

我知道要么会奏效,但“接受的标准”是什么?

3 个答案:

答案 0 :(得分:7)

如果对于以特定格式读取数据的类型有一个istream operator>>重载,那么如果对同一类型实现ostream operator<<重载,它应该以相同的格式输出(否则,它可能会让人感到困惑。)

答案 1 :(得分:3)

这种运营商超载是IMO的一个重大误用和误解。 在真正有意义的地方使用重载。

出于调试目的,请toString()并覆盖&lt;&lt;打电话给它。 不要覆盖&gt;&gt;一点都不。

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

我的2欧元。

答案 2 :(得分:0)

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