From Gossip@Openhome

語言技術:C++ Gossip


C++ 學習筆記 關於 C++ 的歷史無須我來介紹了,有興趣的可以用搜尋引擎來找出一堆談 C++ 歷史的,C++ 是個歷久不衰的程式語言,功能強大但入門不易,後期有很多的程式語言致力於擁有 C++ 大部份的功能並去除其不易掌握的部份,即使後期的程式語言如此之多,但 C++ 仍在程式語言工具中佔有一席之地。

這是我的 C++ 學習筆記第二個版本,主要的目的是將 之 前 的 .chm 文件 改為網頁格式,並重新看看有沒有什麼語法或觀念的錯誤,也藉此複習一下 C++,文件中所有的範例都是在 Dev C++ 4.9.9.2 中撰寫測試。




入門基礎
        學習程式語言第一件事,通常就是先作個簡單的程式來運行一下,並從瞭解程式語言的資料型態、變數與流程控制語法開始。
  • 資料型態與變數
        無論如何 先來個 "Hello! World!" 顯示一下程式執行結果,增加一點撰寫程式的信心!接著就耐心的瞭解一下 C++ 的資料型態,以認識一下變數、常數。
  • 運算
        程式的目的簡單的說就是運算、運算還是運算,加減乘除這類的動作是少不得的,在C++中提供運算功能的就是運算子(Operator)。
  • 流程控制
        流程控制語法是程式設計的基本,藉由各種條件判斷與迴圈重覆執行語法,您可以令您的程式因應不同的狀況而作出不同的回應。

進階型態
        陣列、字串、指標這幾種C++的進階型態相當常被使用,雖然看似複雜,但彼此之間互有相關。
  • 陣列(Array)
        各種型態的陣列各有其不同的用途,但無論如何,先從基本型態的一維陣列、二維陣列開始認識起。
  • 向量(Vector)
        C++提供了內建陣列的替代型態 vector,vector 可以如同陣列一般的操作,並記得自己的長度資訊,您也可以使用物件的方式來操作 vector 。
  • 字串(String)
        字串的本質是字元陣列,而在C++中還可以使用string類別來表現字串,兩者都有瞭解的必要。
  • 指標(Pointer)
        指標可指向一個記憶體位址,可對物件作間接操作,指標擁有型態,這用來告訴編譯器如何解釋記憶體空間的內容,以及每一次運算的大小。

函式
        程式中超過兩次以上重複使用的程式碼,可以考慮將之定義為函式,以便重覆呼叫使用,降低相同程式片段的維護成本。
  • 函式入門
        先簡介一些與函式定義相關的幾個語法,並談談幾個變數可視範圍的議題。
  • 進階議題
        遞迴呼叫、傳值、傳址、傳參考等,這些議題在函式的使用上關乎執行資源的使用與效率問題。

物件基礎
        以物件為基礎的程式設計,將程式中互動的單元視為一個個的物件。
  • 封裝(Encapsulation)
        封裝物件資訊是第一步,您要瞭解如何使用類別定義物件,像是定義物件的屬性、行為等等,類別是建構物件 時所依賴的規格書。
        一些有關於指標、運算子重載、特殊型態類別的相關議題。

物件導向
以物件為基礎作延伸,多型(Polymorphism)操作為設計時的核心,於執行時期 動態繫結(Dynamic binding)以決定物件的行為。
  • 繼承(Inheritance)
        您可以繼承某個(父)類別的定義並加以擴充,而制訂出一個新的(子)類別定義。
        多型操作在物件 導向設計中伴演著極重要的角色,使用的適當與否,足以 影響程式的架構與未來的可維護性。


例外處理(Exception Handling)
        例外(Exception)是程式執行時期可偵測到的異常狀況,C++的例外處理包括兩部份:例外的丟出(throw)與例外的捕捉(catch)與處 理。


範本(Template)、名稱空間(Namespace)
        範本(Template)提供被參數化的型態(Parameterized Types)功能,將型態相依與非型態相依的演算法分離開來;名稱空間則提供一個名稱管理容器,減低名稱衝突的機會發生。


輸入/輸出
        來看看 C++ 中如何處理輸入/輸出,像是格式控制、檔案 I/O 等。
  • 格式控制與 <<、>> 運算子重載
        首先來看看基本的格式控制,以及 << 、 >> 運算子的重載。
        檔案的輸出輸入是 I/O 的基本,為認識 I/O 的入門必學。


附錄