Вы должны отформатировать оператор << для классов? - PullRequest
6 голосов
/ 21 июня 2010

Например, должен ли оператор >> соответствовать оператору <<? </p>

Пример базы данных:

Если оператор >> читает что-то в следующем формате:

2
Joe 500 20 1
Bob 250 30 0

должен ли оператор << выводить что?Или что-то вроде этого: </p>

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

А потом есть отдельная функция writeFile ()?

Я знаю, что любой из них будет работать, но что такое "принятый стандарт"?

Ответы [ 3 ]

7 голосов
/ 21 июня 2010

Если у вас есть перегрузка istream operator>> для типа, который читает данные в определенном формате, то, если вы реализуете перегрузку ostream operator<< для того же типа, он должен вывести в том же формате (в противном случае это может привести к перегрузке). запутаться).

3 голосов
/ 21 июня 2010

Этот вид перегрузки операторов является IMO большим злоупотреблением и неправильным представлением.Используйте перегрузку там, где это действительно имеет смысл.

В целях отладки используйте toString() и переопределите <<, чтобы вызвать его.Не переопределять >> вообще.

>> и << обычно служат для отправки сериализованных данных в потоки, а не для связи с пользователем.

Мои 2 евроцента.

0 голосов
/ 21 июня 2010

Оба или независимо друг от друга, по вашему желанию вы можете перегрузить их.

...