Thinking in C++ 閱讀筆記(第一章)

 2月20日

剛買書,明明是開源的,還要將近60元,黑啊真是的!

歸入正題:

        粗看了一下序言,大概地介紹吧,還有一堆推薦書的好話。真正讓我興奮的還在後面!看C++方式的改變!

Bjarne Stroustrup:C++ is a general purpose programming language, not just a Object-Oriented programming language.


第一章 對象導言(introduction不就是介紹嗎?導個什麼言!)

             我所回憶的內容:(翻書補充)(後來修改的)

           1、  對象和類

                   抽象法來看問題,萬物即爲對象,而對象有性質,所以把對象用抽象的類,也就是共性來描述。

                   五大原則:

                    1、萬物皆爲對象(程序也如此,可細分爲一組)

                    2、對象互相交流(函數調用請求)

                    3、對象互構(更復雜程序的可能性)

                    4、一切對象都有屬性(類的可能)

                    5、一個類的所有對象都能接受同一個消息(OOP強大功能的可能)

                 模型: 類(抽象)——實例/對象(具體)

                  解決理論與實際結合的困難:接口 interface(函數)
        
                 模型:對象——接口                   對象:特性(數據元素)——行爲(功能)<接口>

                 可以想見int的定義(內建的類)和class的定義目的是一致的(用戶自定義的類)類即類型

                 C++實現:class

        2、類的特點

              封裝:用類實現,避免複雜性的暴露和錯誤,隱私  

                            模型:程序員(類創建者)——客戶使用者(客戶程序員)

                            C++實現:access specifer 訪問說明符

                                               
 public:公共接口(外部函數可以訪問) 

                                                protected:保護接口(外部函數中繼承類的可以訪問)     

                                                pravite:內部接口 (內部函數可以訪問)<保密性漸大>

             繼承 (爲了重用)inheritance:把類進一步抽象

                       模 型:基類(類的類//我的用語)——派生類

                                    (超類/父類)                  ——(繼承類/子類)
                       兩種繼承方式:修改派生類的接口函數(純繼承 pure inherent) 函數重載 over-ridding

                                                     is-a

                                                   增加派生類的接口函數  

                                                    is-like-a (基類無法調用派生類新函數) 

                     另一種方式:聚合aggregation(組合 composition)不同類的對象組成新類(創建一個成員對象)

                                             has-a  靈活性
          多態性:繼承類的個性

                       效率問題:(基於 is-a)

                      
希望通過操作基類函數合法進行派生類實現

                       處理派生類型就像處理基本類型的過程(向上類型轉化 upcasting


                        從基類函數執行不同派生類被繼承函數正確性的保證:

                                        e.g  基類move()-> 派生類1.move()派生類 2.move()

                                          
其他語言:早捆綁 early binding

                                          C++:         晚捆綁 late binding (編譯器到函數執行還不知道具體類型及對象個數)

                                                              關鍵字 virtual (先有個印象)

         3、對象的創建和銷燬  (在後面進一步理解)

               兩種方式:堆stack  動態分配 速度慢 量大 虛擬內存   不關注細節 靈活性

                                   棧heap  靜態分配 速度快 量小 內存            關注細節(函數生命期)

             C++ 的實現:動態分配

                                     new        創建對象

                                     delete     銷燬對象
[方法論] (跳過)
                                               

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