2013-11-15 42 views
0

enter image description here直到現在,我相信cout是ostream類的一個對象。但是今天我讀了一本書,說cout是osream_withassign類的一個對象。 這個班級在哪裏。Cout是ostream_withassign類的一個對象

我是C++中輸入/輸出概念的新手。請問任何人都可以向我解釋iostream庫中類的層次結構嗎? 我使用Google搜索,但沒有找到任何確切的答案。

編輯:我附上一張圖片,後來在同一本書中發現。

回答

0

關於實際的層次,你可以讀取標準的C++語言的,或看here

std::coutstd::ostream類型,這是對的typedef的std::basic_ostream<char>的對象。

4

標準似乎要求std::cout有類型 std::ostream。歷史上,在經典(預標準) iostream中,它必須是ostreamostream派生的類型。 (沒有詳細說明,因此實施 不必記錄它。)我懷疑這是標準中意外超標的 ,但這就是它的立場。

從來沒有一個「標準」類ostream_withassign ,你可以指望。在傳統的iostreams中,在標準之前,至少有一個實現有這樣一個類, 它用於cout(當時沒有std::),爲了 管理初始化,儘管我不確定細節。至於 據我所知,即使這樣,這是一個實現細節,並沒有指定,即使通過實現。這不是廣泛的 ;我之前使用的實現中沒有一個實現它, 並且它在我今天意識到的任何實現中都不存在。

所以這本書是非常過時的。如果這本書聲稱是關於C++的 ,那就是錯誤的,甚至在那個時候。如果它聲稱是 關於C++的具體實現,它取決於:如果它是 描述內部細節,它是正確的,但如果它聲稱 描述接口,它是錯誤的。

+0

請看看我上傳的圖片。 (這本書是特定於C++的) –

+0

@gandhi_rahul這可能是15年前iostream實現某種特定實現的方式。這與今天無關,即使如此,它也是非常具體的實現。 –

+0

好的。這意味着實施模式已經改變。對!? –

相關問題