程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++ —— C++類

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;

無論哪個對象調用,成員函數從獲得的參數(顯式的和隱含的)來判斷都清楚,所以成員函數中訪問成員無需對象名作前綴。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved