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

C++基礎知識(六)--類--成員函式的定義--物件的建立與使用--從面向過程到面向物件

一、類

  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.面向物件的程式設計,面向物件技術中的物件就是現實世界中某個具體的物理實體在計算機邏輯中的對映與體現,將資料和對資料的操作放在一起。面向物件的程式特點是封裝性,派生與繼承,多型