物件導向設計_C++1,物件導向設計_c

來源:互聯網
上載者:User

物件導向設計_C++1,物件導向設計_c

精通一門語言不適合我,我喜歡快速掌握一門語言的50%。


物件導向程式設計的三大特點是:封裝、繼承、多態。相對與面向過程,封裝實現了類的介面和實現的分離,其中介面是使用者可以使用的函數,實現包括了私人函數、私人資料等;繼承,實現了代碼的複用;多態是物件導向的核心,通過虛函數實現介面複用,增加編程的方便和多樣性。


類的成員主要包括資料成員和成員函數,也可能有類型成員,如:typdef  int   num;類對象的大小,就是非待用資料成員的大小,而靜態成員存放在全域資料區。成員函數與面向過程的函數一樣,也是存放在代碼區。只不過每個成員函數都有一個隱藏的this形參,this形參的類型是A * const,即指向類類型的常量指標。當通過類對象調用成員函數的時候,會將對象的地址賦值給this形參,成員函數中對類中非待用資料成員的操作都是通過this指標實現的。

const函數中,const修飾的就是this形參。


一個類中有幾個特殊函數,如果使用者沒有自訂這些函數,編譯器會為我們定義。其中包括了:建構函式,拷貝建構函式,賦值運算子以及解構函式。

函數:一般類型的參數可以通過寄存器傳遞,將實參先賦值給某些特定的寄存器,然後跳轉到調用函數的代碼,再將寄存器賦值給調用函數的形參。返回值也一樣,函數執行完後,將返回值賦值給一個寄存器,然後回到函數的調用位置,繼續執行,如果要使用返回值的話,就特定寄存器的值賦給一個變數,如果不用,則寄存器可以為程式所用,裡面的值不知道什麼時候就會被覆蓋。如果傳遞的是一個類,結構體等,則參數和返回值會通過記憶體中的某些空間,實現傳遞。

引用都會轉換成指標操作。

建構函式:與類名相同,無返回值,實現對類成員的初始化。初始化的方式最好選擇初始值列表,如果在函數體初始化,則資料成員已經完成了預設初始化,函數體內是對資料成員的賦值而已。

拷貝建構函式:第一個參數是自身類類型的引用的建構函式。用於通過=初始化對象,以及參數和返回值是非引用時,傳參和返回返回值。類對象通過()完成初始化時,編譯器會選擇最合適的建構函式,也可能選擇拷貝建構函式。

賦值運算子:將=運算子多載。重載運算子本質上是函數,賦值運算子就是一個名為operator=的函數。一般的形式是:A& operator=(const A&);

解構函式:函數名由波浪線加類名組成,無返回值和參數。包括了函數體和析構部分(隱藏),先執行函數體,後執行析構部分,與建構函式相反。銷毀類類型的成員時,會調用起解構函式,內建類型沒有解構函式,銷毀時什麼都不做。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.