c++ iostream庫的一些討論

        大家好,今天慕曉君給大家介紹的是c++中常見的I/O庫:iostream,介紹的結構如上圖所示,iostream庫主要包含兩個類型(類),輸入流istream和輸出流ostream,輸入流中主要使用的對象是cin,表示將控制檯的鍵盤輸入內容輸入到cin後面的變量中,基本語法爲cin >> variable;輸出流常用的有三個對象,分別是cout、cerr和clog,這三種從本質上將都是將流符號後面的內容輸入到控制檯,cout爲一般控制檯輸出,cerr爲警告和錯誤信息輸出,clog爲日誌記錄的輸出,但是爲什麼同樣的東西要出現3次呢?原因很簡單,cout爲一般輸出,主要用於將結果顯示給用戶,我們知道,在軟件設計中,錯誤和警告信息、以及日誌信息是很重要的一塊,幾乎在每個大型項目中,都需要有專門的錯誤報告和日誌記錄,理論上講cout也可以用於實現cerr和clog的功能,但是,第一,cout主要作爲控制檯輸出,如果要將錯誤和警告信息以及日誌信息輸出到文件,那麼cout實現的時候就得考慮到輸出位置的選擇,會很麻煩;第二,三者分開使語句清晰,有利於程序員根據需求“重構”cerr和clog代碼。
上述設計體現了程序設計的簡單性和實用性。


        上圖是簡單的iostream繼承層次,慕曉君和同學討論時,注意到,和第一幅圖不一樣,是iostream是繼承ostream和istream,而不是ostream和istream繼承iostream,這是爲什麼呢?慕曉君水平不足,想到的是可能因爲如果用ostream和istream繼承iostream,那stringstream和fstream就需要在istream和ostream中實現兩次,不滿足程序設計的避免重複原則,後面,慕曉君的同學提出,拿文件流舉例,有些文件是隻讀的,有些文件是隻寫的,如果只在iostream裏實現一個可讀寫的,那麼這樣會導致文件的不安全,實際中,對文件的操作需要分成只讀、只寫和讀寫皆可的情況,這樣實現也具有很強的使用性。

        綜上所述,iostream的繼承層次具有簡單性、安全性和實用性。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章