C++ Gossip学习笔记

From Gossip@caterpillar

語言技術:C++ Gossip


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

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




入門基礎
        學習程式語言第一件事,通常就是先作個簡單的程式來運行一下,並從瞭解程式語言的資料型態、變數與流程控制語法開始。
  • 資料型態與變數
        無論如何 先來個 "Hello! World!" 顯示一下程式執行結果,增加一點撰寫程式的信心!接著就耐心的瞭解一下 C++ 的資料型態,以認識一下變數、常數。
    • Hello! World!
    • 資料型態(Data type)
    • 字面常量(Literal constant)
    • 變數(Variable)
    • 終端機輸入輸出(Input/Output)
  • 運算
        程式的目的簡單的說就是運算、運算還是運算,加減乘除這類的動作是少不得的,在C++中提供運算功能的就是運算子(Operator)。
    • 算術(Arithmetic)運算、型態轉換(Type conversion)
    • 關係(Relational)運算、條件(Conditional)運算
    • 邏輯(Logical)運算、位元(Bitwise)運算
    • 遞增(Increment)、遞減(Decrement)、指定(Assignment)運算
  • 流程控制
        流程控制語法是程式設計的基本,藉由各種條件判斷與迴圈重覆執行語法,您可以令您的程式因應不同的狀況而作出不同的回應。
    • if 條件判斷
    • switch 條件判斷
    • for 迴圈
    • while 迴圈
    • break、 continue、goto

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

函式
        程式中超過兩次以上重複使用的程式碼,可以考慮將之定義為函式,以便重覆呼叫使用,降低相同程式片段的維護成本。
  • 函式入門
        先簡介一些與函式定義相關的幾個語法,並談談幾個變數可視範圍的議題。
    • 函式簡介
    • 行內函式(Inline function)
    • 預設引數
    • 重載函式(Overloaded function)
    • 變數可視範圍(Scope)
  • 進階議題
        遞迴呼叫、傳值、傳址、傳參考等,這些議題在函式的使用上關乎執行資源的使用與效率問題。
    • 遞迴(Recursion)
    • 參數的傳值、傳參考
    • return 的傳值、傳參考
    • 不定長度引數(Variable-length argument)
    • 函式指標

物件基礎
        以物件為基礎的程式設計,將程式中互動的單元視為一個個的物件。
  • 封裝(Encapsulation)
        封裝物件資訊是第一步,您要瞭解如何使用類別定義物件,像是定義物件的屬性、行為等等,類別是建構物件時所依賴的規格書。
    • 簡介類別(Class)
    • 建構函式、解構函式
    • auto_ptr 自動管理配置資源
    • const  與 mutable
    • friend 函式、friend 類別
    • 物件指標
    • this 指標
    • static 成員
  • 封裝的進階議題
        一些有關於指標、運算子重載、特殊型態類別的相關議題。
    • 巢狀類別(Nested classes)
    • 區域類別(Local classes)
    • 成員函式指標(Pointer to member function)
    • 靜態類別成員指標(Pointer to static class member)
    • 重載運算子
    • 使用 friend 函式重載運算子
    • 複製建構函式、物件的指定
    • 使用者自訂型態轉換(User-Defined Conversions)
    • 列舉(Enumeration)
    • Union
    • 位元欄位(Bit-field)

物件導向
以物件為基礎作延伸,多型(Polymorphism)操作為設計時的核心,於執行時期動態繫結(Dynamic binding)以決定物件的行為。
  • 繼承(Inheritance)
        您可以繼承某個(父)類別的定義並加以擴充,而制訂出一個新的(子)類別定義。
    • 公開(public)繼承
    • 受保護的(protected)成員
    • 成員函式的重新定義
    • 繼承後的建構函式與解構函式
    • 保護(protected)繼承、私用(private)繼承
  • 多型(Polymorphism)
        多型操作在物件導向設計中伴演著極重要的角色,使用的適當與否,足以影響程式的架構與未來的可維護性。
    • 虛擬函式(Virtual function)
    • 純虛擬函式、抽象類別(Abstract class)
    • 執行時期型態資訊(RTTI)
    • 使用 dynamic_cast
    • 多重繼承(一)
    • 多重繼承(二)
    • 虛擬繼承(Virtual Inheritance)


例外處理(Exception Handling)
        例外(Exception)是程式執行時期可偵測到的異常狀況,C++的例外處理包括兩部份:例外的丟出(throw)與例外的捕捉(catch)與處理。
  • 簡介例外處理
  • 自訂例外類別
  • 標準例外類別
  • 例外規格(Exception Specifications)


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


附錄
  • C+ +爸爸(Bjarne Stroustrup)給C++初學者的信
  • C/C ++的標準函式庫查詢
  • Complete C++ language tutorial
 

你可能感兴趣的:(C++,exception,vector,function,inheritance,recursion)