第1章緒論

開始寫筆記之前,我也說兩句前言,自己自學c++,爲了儘快的找到新工作應對面試,經同學交流,選了一本國外的,講基礎的c++的書,這本《21天學通c++(第6版)》。個人感覺還不錯,不過我知道,對c++而言,估計還沒開始。努力……

第一章緒論,和大多數書都一樣,講了c++的歷史來源,一些相關的最基本的概念和程序員都少不了的Hello World。

我這也閒話少說,至於歷史是怎樣也管不到,這個讀書筆記,就是把這本書中,我認爲應該記住的東西記下來,雜談就算了,這不是隨訪錄。

我想說一點關於c和c++的學習。這是兩種語言,沒有什麼先學c,再學c++比較好。c++是一門獨立的語言,完全不需要學好c再來學。就好像我們學英語一樣,我們總喜歡把英文翻譯成中文,然後再翻譯回去。老外英文說得那麼溜,根本沒用到中文。c和c++也是同樣道理。

好了,開始我的筆記:

1. 解釋器:就是把指令直接變成對計算機的操作。大多數解釋程序或語言就是所謂的腳本,比如在linux的bshell終端下,你執行echo hello world。它就會打印出hello world。它不需要像c++似的,必須寫一個程序:

#include <iostream>

using namespace std;

int main()

{

   cout << "hello world" << endl;

   return 0;

}

然後編譯連接,生成一個可執行文件,然後你運行這個可執行文件,它纔打印hello world。

解釋語言或程序要想能夠運行,必須要有解釋器,就是把這個程序直接翻譯成操作的中間部分,沒有的話,你的命令式沒任何效果的,就像在文本文檔中輸入echo hello world,然後回車,是沒反應的。像python perl shell 等都是腳本語言。Visual Basic 6也有解釋器,或稱爲運行庫。Visual Basic.NET 和Java的解釋器一般稱爲Virtual Machine(虛擬機)。

2. 編譯器:先將源碼換成中間格式,生成目標文件,這步叫做編譯;然後編譯器調用鏈接器,將目標文件組合成可執行文件。編譯語言生成的程序,不需要額外的中間件來輔助執行,它是可以直接在電腦上運行的。比如exe文件。

3. 面向過程和麪向對象:c語言是一種面向對象的語言,你想要的任何東西,都必須你自己寫出來,你要個窗口,就要自己create一個,然後確定窗口大小,所在位置等。VB就不同了,你想要個窗口,直接拖一個過來就好了,已經有人寫好了,就是需要你設置一下它的屬性的動作。這就是面向過程和麪向對象的區別。

4. 面向對象的特點:c++也是一種面向對象的語言,你想用動態數組,不用自己寫一個函數來實現了,只需包含一下相關的頭文件,直接引用就行了。面向對象的語言都有三個特點:封裝,繼承,多態

4.1 封裝:能夠成爲自包容單元的特性成爲封裝。概念太拗口,就是一塊程序能成爲一個整體,對其他模塊的調用和訪問有所控制。這樣的好處就是可以數據隱藏。數據隱藏的好處就是可以讓人脫離一些不必要的繁瑣,去做更專業的事。比如你會開車但你不用造車,你不用瞭解製作汽車的各種技術也能有精湛的開車技術。

4.2 繼承:你有個函數或是類的架構和實現寫的不錯,有一個類和這個相似,但又有不同,你要怎麼做?把那個拷過來然後改改?不用麻煩了,繼承可以幫你解決。就是把程序中相似類或函數的相同點提取出來(提取公因式嗎?有點像),編寫一個基礎的類。然後子類對這個基礎的類進行繼承,那麼,基礎類(也就是父類)中寫的方法和實現可以在子類中直接用,就不用再寫一遍了。這樣還可以增加代碼的利用率,可以通過這個父類派生很多子類。就是寫過的好的通用的東西,保存下來,以後用到就不用寫了。直接拿來用。我覺着和中國的成語差不多,比如手到擒來,我說了你就明白什麼意思,不用我再解釋了,因爲背後有一個很經典的故事。比如有個父類是animal,如果有個子類dog繼承了這個animal,我不用對dog寫任何功能,我們也知道,它是動物,有腿,會發出聲音等等

4.3 多態:就是同樣的操作,會有不同的反應。比如你按別人家的門鈴,可能門鈴聲和你家的就不一樣。這個特點和繼承有很大聯繫。比如上面說的,animal裏面有一個eat()函數,它可能就是打印出 eat food。但是dog繼承後重寫(覆蓋)了父類的eat()函數,變成eat meat。所以你調用父類的eat()爲eat food,調用dog的eat()爲eat meat。再有個子類cat繼承animal,覆蓋eat()爲eat fish。那調用cat的eat()就是eat fish。同樣是eat()函數,不同的類調用就不一樣,這就是多態。

4.4 其實面向對象還有個特點,就是抽象,這個自己慢慢品味吧。

5. 第一個程序:剛纔我也在上面寫了這第一個程序:

#include <iostream>

using namespace std;

int main()

{

   cout << "hello world" << endl;

   return 0;

}

在編譯鏈接,就能生成一個可執行文件,運行就會輸出hello world了。如果用vs2010的或是其他IDE的同學,發現運行一下,就一個黑框一閃,什麼都沒看到,可以這樣寫

#include <iostream>

using namespace std;

int main()

{

   char a;

   cout << "hello world" << endl;

   cin >> a;

   return 0;

}

或是在最後大括號一行設置一個斷點。

下章見(以上全是個人觀點,如果不當,敬請提出)

 

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