天天看點

C++ —— C++類

C++ ——類

1、類

       類是具有相同屬性和行為的一組對象的集合,它為屬于該類的全部對象提供了統一的抽象描述,其内部包括屬性和行為兩個主要部分。

class Clock
{
public:
  void SetTime(int new_hour, int new_minute,int new_second);
  void ShowTime();
private:
  int hour, minute, second;
};
           

(1)利用類可以實作資料的封裝,隐藏,繼承與派生。

封裝:将抽象出的資料成員、代碼成員相結合,将它們視為一個整體。目的是增強安全性和簡化程式設計,使用者不必了解具體的實作細節,而隻需要通過外部接口,以特定的通路權限,來使用類的成員。實作封裝:類聲明中的{}

(2)利用類易于編寫大型複雜程式,其子產品化程度比采用函數更高。

  函數:将邏輯上相關的語句與資料封裝,用于完成特定的功能;

  類:将邏輯上相關的函數與資料封裝,對所要處理的問題進行描述。

(3)類是C++程式設計的核心成分,是C++封裝的基本單元,它把資料和函數封裝在一起。

2、類的構成

class類名辨別符
{
public:
  // 公有成員(外部接口)
protected:
  // 保護成員
private:
  // 私有成員
};
           

(1)關鍵字class表示類,類名辨別符一般首字母用大寫字母表示,以示與對象名的差別。(2)類的成員分為兩類:資料成員和成員函數。

(3)public、protected、private通路控制

private(私有成員):隻允許類内部的成員通路,任何本類以外的成員(對象)均不能通路。

public(公有成員):它們是類與外部的接口,任何外部函數都可以通路公有成員。

protected(保護成員):與private類似,其差别表現在繼承與派生時對派生類的影響的不同。

3、成員函數

(1)成員函數與普通函數

       成員函數屬于類,成員函數定義是類設計的一部分,其作用域是類作用域,而普通函數一般為全局函數。

       成員函數的操作主體是對象,使用時通過捆綁對象來行使其職責,而普通函數被調用時沒有操作主體

(2)類中定義成員函數

       成員函數的定義代碼可以放在類定義中。類中定義的成員函數的規模一般都比較小,語句隻有1~5句。在類中定義的成員函數預設為内聯函數,即使沒有明确用inline标示。在C++中,類定義通常在頭檔案中,是以這些成員函數定義也伴随着進入頭檔案,而内聯函數是可以放在頭檔案中的。

(3)類後定義成員函數

       将類定義和其成員函數定義分開,是目前開發程式的通常做法。

       把類定義(頭檔案)看成是類的外部接口;類的成員函數定義看成是類的内部實作(源檔案)。

    傳回類型類辨別符::成員函數名(參數表)

    {}

    其中::是作用域區分符。

如:voidA::Set(int a,int b){}      

(4)重載成員函數

       同一個類的成員函數可以重載,方法與非成員函數重載相同。不同類的成員函數同名,不是函數重載。類的成員函數與非成員函數同名,不是函數重載。

4、調用成員函數

(1)必須通過對象去調用,要指定對象和成員名,否則無意義。

       格式:對象名.成員

(2)類類型作為一個構造類型,不但可以定義對象,而且可以定義對象指針或對象引用。

(3)this指針

       this指針是C++實作封裝性的一種機制。程式運作時,系統自動為每個對象提供一個this指針,該this指針接受目前對象的位址,所有對成員的通路都被隐含地加上字首:this->。

如month=m;等價于this->month=m;

       無論哪個對象調用,成員函數從獲得的參數(顯式的和隐含的)來判斷都清楚,是以成員函數中通路成員無需對象名作字首。