2010-06-21 29 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