《c++ primer》讀書筆記4

來源:互聯網
上載者:User

筆記範圍:1.5節

 

本節的內容不是很難,學過一點編程的人都會很容易接受,但是,我一直以來就有一種感覺。自己用的最多但又用的最糊塗的也就是i/o系統,很明顯i/o實現了對電腦裝置的直接操作。在c++裡我們知道它是通過ios類的對象來完成的。從感覺上講,遠遠不如c來的直接,明白。當然這樣做的好處是大大簡單了我們的操作,但是不幸的是這會給我們的理解造成一定的困難,下面我將提出自己疑問。

第一,      大家都知道,我們的io操作是通過三個對象來完成的。cin、cout、cerr。作者在描述的時候用了“綁定”這個詞,很明顯被抽象的資料類型和具體裝置實現了完美的對接。但是我的問題是,從ADT的思路來說,這些對象封裝了那許資料?提供那些操作?這些資料和介面是如何對裝置進行控制的?很顯然,以我們現在的知識很難回答這些問題。就算是自以為合理的估計也不能,但是這樣的思考,有助於我們對類設計思維的熟悉,但是思考到此為止罷。不然我就誤人子弟了。

第二,      還有一個問題,初學者也許會問,作者告訴我們cout和cerr都可以用來輸出。他們的區別一個是一般的輸出,一個是輸出錯誤資訊。可是這樣的解釋並不能使我們這些好奇的人滿意。於是我做了個惡作劇,改寫了我們那個知名的”hello world!”

int main() {

             cerr<<”hello world!”<<endl;

             return 1;

          }

       事實證明 使用者如果不看代碼。他們不會知道自己看到的是個err。那麼這兩個對象的區別只是個習慣或約定嗎?我們同樣不能解釋。把它留著罷,相信總會“悟”的

第三,      我想談談那個“endl”,在很多教材裡把它等價於”/n”正確嗎?no,你可以寫下如下句子。

cout<<”aaa”;

a=getchar();//.假設a已經定義

cout<<a;

在VC6中你會發現輸入輸出的順序亂了(剛才在VC++.NET 2003又恢複正常了、奇怪。因此不建議在c++中用c的東西),為什麼呢?作者告訴我們endl除了/n的功能外還有個重新整理的功能,重新整理什嗎?看仔細點,重新整理緩衝區。什麼是緩衝區?哦。這個問題也許你需要一些別的知識,比如。《電腦群組成原理》

關於檔案的操作,與單檔案非常類似,唯一要注意的是流進出的參照物、記憶體?or 檔案?

筆記的最後,我還是要提醒大家。我提出了很多牛角尖的問題。只是對初學者的思考方法提出一些個人建議。對於這些問題本身有些並沒有討論價值。有些不是現在該解決的問題。在這節裡你的任務其實很簡單,搞清每個對象和運算子的作用。就是這樣,c++之父把c++說成難學易用的語言,我們可以理解這句話的涵義。要不斷的想起這句話,

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.