1. 程式人生 > >C++基礎知識(六)--類--成員函數的定義--對象的創建與使用--從面向過程到面向對象

C++基礎知識(六)--類--成員函數的定義--對象的創建與使用--從面向過程到面向對象

物理 邏輯 需要 面向對象技術 函數 span void 成員函數 開發

一、類

  1.類是一種數據類型,將數據與對數據的操作(函數)放到一起。一個類中的數據通常只能通過本類提供的方法進行處理,這些方法成為該類與外部的接口,對象之間通過消息進行通訊。

  2.如果在類的起始點無訪問說明符,系統默認為私有(private)

  3.類是一種數據類型,定義時系統不為類分配存儲空間,所以不能對類的數據成員進行初始化。類中的任何數據成員也不能使用關鍵字extern,auto,register等關鍵字限定其存儲類型




二、成員函數的定義

  1.函數定義:通常在類定義中,成員函數僅做聲明,函數定義通常在類外。格式如下:

      返回值類型 類名::函數名(參數列表)

        {......}//函數體

      ::為域解析運算符,它指出該函數是屬於哪一個類的成員函數。

  2.內聯成員函數的定義與使用:見第三板塊對象的創建於使用。




三、對象的創建於使用

  1.對象是類的實例。定義一種數據類型只是告訴編譯系統該數據類型的構造,並沒有預定內存。類只是一個樣板,以此樣板可以在內存中開辟出同樣結構的的實例-對象。

  2.當用類創建多個對象時,內存分配有兩種情況:1、在累說明中定義成員函數2、在類說明外部定義成員函數

  • 在類內部定義成員函數內存分配如下:各個對象完全獨立地安排內存方案
    • 技術分享圖片
    • 各對象完全獨立地安排內存方案
    • 數據區存放成員數據,代碼區存放成員函數
  • 在類說明外部定義成員函數內存分布如下:代碼區為各個對象共用
    • 技術分享圖片
    • 各個對象共用代碼區的內存分配分配方案
    • 僅為每個對象分配各自的數據區,代碼區為各個函數共用

  3.內聯成員函數:使用inline關鍵字,系統自動采用內聯擴展方法實現,每個對象都有該函數的一份獨立的代碼。

  • 1 對一個商品類:CGoods
    2 其成員函數RegisterGoods()內聯函數可定義為:
    3 inline void CGoods::RegisterGoods(char name[],int amount,float price)
    4 {
    5 strcpy(Name,name);
    6 Amount=amount;
    
    7 Price=price; 8 }

    結果:每個對象都有RegisterGoods()函數的一份獨立的代碼

    • 需要註意的是:inline只是一個建議,最後由編譯器根據函數體的具體情況決定是否執行。



四、從面向過程到面向對象

  1.面向過程的結構化程序設計

采用的是自頂向下,逐步細分的思想,具體的操作是模塊化,即采用函數實現每一個模塊的功能,數據與數據的處理分離,當軟件規模較大時,采用結構化程序設計,其開發和維護就越來越難以控制。

  2.面向對象的程序設計,面向對象技術中的對象就是現實世界中某個具體的物理實體在計算機邏輯中的映射與體現,將數據和對數據的操作放在一起。面向對象的程序特點是封裝性,派生與繼承,多態

C++基礎知識(六)--類--成員函數的定義--對象的創建與使用--從面向過程到面向對象