直到現在,我相信cout是ostream類的一個對象。但是今天我讀了一本書,說cout是osream_withassign類的一個對象。 這個班級在哪裏。Cout是ostream_withassign類的一個對象
我是C++中輸入/輸出概念的新手。請問任何人都可以向我解釋iostream庫中類的層次結構嗎? 我使用Google搜索,但沒有找到任何確切的答案。
編輯:我附上一張圖片,後來在同一本書中發現。
直到現在,我相信cout是ostream類的一個對象。但是今天我讀了一本書,說cout是osream_withassign類的一個對象。 這個班級在哪裏。Cout是ostream_withassign類的一個對象
我是C++中輸入/輸出概念的新手。請問任何人都可以向我解釋iostream庫中類的層次結構嗎? 我使用Google搜索,但沒有找到任何確切的答案。
編輯:我附上一張圖片,後來在同一本書中發現。
關於實際的層次,你可以讀取標準的C++語言的,或看here
std::cout
是std::ostream
類型,這是對的typedef的std::basic_ostream<char>
的對象。
標準似乎要求std::cout
有類型 std::ostream
。歷史上,在經典(預標準) iostream中,它必須是ostream
或從 ostream
派生的類型。 (沒有詳細說明,因此實施 不必記錄它。)我懷疑這是標準中意外超標的 ,但這就是它的立場。
從來沒有一個「標準」類ostream_withassign
,你可以指望。在傳統的iostreams中,在標準之前,至少有一個實現有這樣一個類, 它用於cout
(當時沒有std::
),爲了 管理初始化,儘管我不確定細節。至於 據我所知,即使這樣,這是一個實現細節,並沒有指定,即使通過實現。這不是廣泛的 ;我之前使用的實現中沒有一個實現它, 並且它在我今天意識到的任何實現中都不存在。
所以這本書是非常過時的。如果這本書聲稱是關於C++的 ,那就是錯誤的,甚至在那個時候。如果它聲稱是 關於C++的具體實現,它取決於:如果它是 描述內部細節,它是正確的,但如果它聲稱 描述接口,它是錯誤的。
請看看我上傳的圖片。 (這本書是特定於C++的) –
@gandhi_rahul這可能是15年前iostream實現某種特定實現的方式。這與今天無關,即使如此,它也是非常具體的實現。 –
好的。這意味着實施模式已經改變。對!? –