C++學習筆記-預備知識
1.1 C++簡介
C++融合3種不同的程式設計方式:C語言代表的過程性語言、C++在C語言基礎上新增的類代表的面嚮物件語言、C++模板支援的廣泛程式設計。
1.2 C++簡史
1.2.1 C語言
Ritchie希望有一種語言能將低階語言的效率、硬體訪問能力和高階語言的通用性、可移植性融合在一起,於是他在舊語言的基礎上開發了C語言。
C語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的面向過程的計算機程式語言。
1.2.2 C語言程式設計原理
一般來說,計算機語言處理兩個概念——資料和演算法。資料是程式使用和處理資訊,而演算法是程式使用的方法。從概念上說,過程化程式設計首先要確定計算機應採取的操作,然後使用程式語言來實現這些操作。程式命令計算機按一系列流程生成特定的結果,就像菜譜制定了廚師做蛋糕時應遵循一系列步驟一樣。
隨著程式規模的擴大,早期的程式語言(FORTRAN和BASIC)都會遇到組織方面的困難。例如,程式經常使用分支,根據某種測試結果,執行一組或另一組指令。很多舊式程式的執行路徑很混亂,幾乎不能通過閱讀程式來解釋它,修改這種程式更是一種災難。為了解決這種問題,一種更有秩序的程式設計方法——結構化程式設計。另一種新原則是自頂向下的設計。
1.2.3 面向物件程式設計
雖然結構化程式設計的理念提高了程式的清晰度、可靠性,並使之便於維護,但它在編寫大型程式是,仍面臨著挑戰。為了應付這一種挑戰,OOP提供了一種新方法。與強調演算法的過程性程式設計不同的是,OOP強調的是資料。
在C++中,類
OOP程式設計並不僅僅是將資料和方法併為類定義,還有助於建立可用程式碼,這將減少工作量。
資訊隱藏可以保護資料,使其免遭不適當的訪問。多型能讓您為操作符和函式建立多個定義,通過程式設計上下文來確定使用哪種定義。繼承讓您能夠使用舊類派生出的新類。
設計有用、可靠的類是一項艱鉅的任務,幸運的是,OOP語言使程式設計師在程式設計鍾能夠輕鬆使用已有的類。廠商提供了大量的有用的類庫,包括設計用於簡化Windows或Macintosh環境下變成的類庫。C++正真的優點之一是:可以方便的重用和求該現有的經過仔細測試的程式碼。
1.2.4 C++和通用程式設計
通用程式設計是C++支援的另一種程式設計模式。
OOP強調的是程式設計的資料方面,通用程式設計強調的是演算法方面。
OOP是一個管理大型工程的工具,通用程式設計提供了執行常見任務的工具。
1.2.5 C++的起源
C++和C一樣,都是在貝爾實驗室誕生的。它的主要功能是方便編寫出好程式,讓每個程式設計師更加快樂。
1.3 可移植性和標準
在不修改程式碼的情況下,重新編譯後,在不同的平臺上程式將執行良好——可移植性。
可移植性障礙:硬體、語言差異
標準是不斷髮展的。
1.4 程式建立的技巧
1.使用文字編輯器編寫程式碼,並將其儲存到檔案彙總,這個檔案就是程式的原始碼。
2.編譯原始碼。翻譯為主機使用的內部語言,機器語言。
3.將目的碼與其他程式碼連結起來。
1.4.1 建立原始碼檔案
有些C++實現其功了整合開發環境,讓您能夠在主程式鍾管理程式開發的所有步驟,包括編輯。
有些實現只能處理編譯和連結階段,要求在系統命令列上輸入命令。
C++源程式字尾必須使用正確(檔名.cpp)
使用什麼副檔名去決定於C++的實現。
C++實現 |
原始碼的副檔名 |
C++的實現 |
原始碼的副檔名 |
UNIX |
C、cc、cxx、c |
Watcom |
cpp |
GUN C++ |
C、cc、cxx、cpp、c++ |
Microsoft Visual C++ |
Cpp、cxx、cc |
Digital Mars |
cpp、cxx |
Metrowerks CodeWarrior |
cp、cpp、cc、cxx、c++ |
Borland C++ |
Cpp |
|
|
1.4.2 編譯和連結
最初,Stroustrup 實現C++時,使用了一個C++到C的編譯器程式,而不是開發直接的C++到目的碼編譯器,隨著C++的日漸普及,越來越多實現轉向建立C++編譯器,直接將C++原始碼生成目的碼。
①UNIX編譯和連結
②Linux編譯和連結
③Windows命令列編譯器
④Windows編譯器
⑤Macintosh上的C++
1.5 總結
C語言新增了諸如控制結構和函式等特性,一遍更好地控制程式流程,支援結構化和模組化程度更高的方法。
C++增加了對面向物件程式設計和泛型程式設計的支援,這有助於提高模組化和建立可重用程式碼,從而節省程式設計時間並提高了程式的可靠性。