類和物件DE初學吧

2021-05-25 22:29:11 字數 2777 閱讀 1477

第一章 類和物件

類和物件是物件導向程式設計的兩個最基本、最重要的概念。所謂物件就是客觀事務在計算機中的抽象描述;而所謂類則是對具有相似屬性和行為的一組物件的統一描述。從程式語言的角度來說,類是一種資料型別,而物件是具有這種型別的變數。

1.類的定義

類定義的一般形式為:

class 類名

private:

資料成員或成員函式

protected:

資料成員或成員函式

public:

資料成員或成員函式

《各成員函式的實現**》

其中,class是定義類的關鍵字。類名是乙個有效的標誌符,且一般首字母大寫。大括號括起來的部分是類說明部分,它宣告了類的所有成員(包括資料成員和函式成員),這些成員從訪問許可權上分成三類,即私有(private)、公有(public)和保護(protected),其中預設許可權為private.

類的private部分說明的成員,在類之外是不能訪問的,只有類中的成員函式才能訪問private的資料成員和成員函式。類的public部分說明的成員,可被程式中的任何函式或語句訪問,public成員多為成員函式,用來提供乙個與外界的介面,外界只有通過這個介面才可以實現對private成員的訪問。類的protected部分說明的成員,不能在類之外訪問,只有類的成員函式及其子類(派生類)可以訪問protected的成員。

2.成員函式的定義

類中的成員函式可以在兩處定義:一是將成員函式的定義直接寫在類中,一般適合於成員函式規模較小的情況;二是在類的定義體中只寫出成員函式的原型說明,而成員函式的定義寫在類的定義之外,這種情況比較適合於成員函式體較大的情況,其定義格式為:

返回值型別 類名::成員函式名(引數說明)

函式體;

此處的「::」符號稱為作用域運演算法(名空間分隔符),它是用來指明哪個函式屬於哪個類或哪個資料屬於哪個類。

需要說明的是,成員函式既可以是有參函式,也可以像普通函式一樣,給形參指定預設值。

3.物件及指向物件的指標

物件是類的例項,定義物件之前一定要說明該物件的類。定義物件的一般格式為:

類名 物件名錶;

其中,物件名錶中可以有乙個或多個物件名,多個物件名之間用逗號分隔。

另外,也可以定義指向類型別的指標,其定義格式為:

類名 *指標變數名;

4.訪問物件的成員

訪問物件的成員有以下兩種格式:

(1) 物件名。成員名

(2) 指標變數名->成員名

第一種格式是利用物件和運算子「。」訪問成員;而第二種格式是採用指向物件的指標和運算子「->」來訪問成員,並且第二種格式中的指標變數必須已指向某個物件。

5.類成員指標

在c++語言中,除了可以定義指標物件外,還可以定義類成員指標。

類資料成員指標就是程式中定義的用於指向類中資料成員的指標變數,借助該指標變數可以訪問它所指向的類中的資料成員(該資料成員必須具有public訪問許可權),但該指標變數不是類的成員,它只是程式中的乙個指標變數而已。

類資料成員指標的定義格式如下:

型別 類名::*指標變數名;

此處的「型別」要與類中資料成員的型別保持一致。

要使已經定義的類資料成員的指標變數指向類中某個資料成員時,可以通過以下語句:

類資料成員指標變數名=&類名::類資料成員變數名;

當類資料成員指標變數已經指向類中某個資料成員時,可以通過以下語句訪問類中資料成員:

物件名。*類資料成員指標變數名;

6.this指標

在每乙個類成員函式的形參表中都有乙個隱含的指標變數this,該指標變數的型別就是成員函式所屬類的型別。當程式中呼叫成員函式時,this指標變數被自動初始化為發出函式呼叫的物件的位址。

儘管我們在定義成員函式時沒有看到this指標變數,也沒有定義this指標變數,但是在成員函式的函式體內我們可以使用this指標變數,因為該指標變數使系統隱含給出的,我們不需要也不能在成員函式的形參表中對this指標變數進行顯示說明。

類中成員函式有了隱含的指標變數this後,就可以保證用不同的物件呼叫成員函式是對不同物件的操作。

7.物件賦值語句

對於同乙個類生成的兩個物件,可以進行賦值,其功能是將乙個物件的資料成員賦值到另乙個物件中去,賦值語句的左右兩邊各是乙個物件名。

如,已知乙個類example,則:

example obj1,obj2;

obj2=obj1;//將物件obj1的資料成員賦給物件obj2

8.物件的作用域和生存期

在不同的位置以不同的方式定義物件時,其作用域和生存期是不同的,其原理與普通變數相同。可分為區域性物件(不包括區域性靜態物件)、靜態物件(區域性靜態物件和全域性靜態物件)、全域性物件等。

9.堆物件

所謂堆物件是指在程式執行過程中,根據需要隨時可以建立和刪除的物件。堆物件被建立在記憶體中一些空閒的儲存單元中,這些儲存單元被稱為堆。堆可以被建立的物件占有,可以通過刪除堆物件而獲得釋放。

需要利用new運算子建立堆物件,利用delete運算子刪除堆物件。堆物件的生存期是整個程式的生命期。如:

example *p;//p為指向類example物件的乙個指標

p=new example(); //使用new給p分配記憶體空間

delete p; //使用delete釋放p所指向的空間

10.物件陣列

當乙個陣列的型別為類型別時,該陣列中的每個元素都是該類中的乙個物件,則這種陣列就是物件陣列。物件陣列的定義格式為:

類名 陣列名 [陣列大小];

如:example array[10];

表明array陣列是乙個一維物件陣列,該陣列有10個元素,從array[0]到array[9],其中每個元素都是類example的物件。

初學伴生類和伴生物件

伴生類和伴生物件應在同乙個檔案中,名字相同 class類稱為object的伴生類,object稱為class的伴生物件 例項1 class person uname string,uage int def this age int def this name string println class...

類與物件初學總結

內建資料型別 int float char.自定義型別 類 class clock 類名 物件 注意 物件所佔據的記憶體空間只是用於存放資料成員,函式成員不在每乙個物件中存在副本,每個函式的 在記憶體中只佔據乙份空間。關鍵字 public和private用來指定成員的不同訪問許可權 公有型別成員定義...

C 類和物件 類和物件

c 中物件的型別稱為類,類代表了某一批物件的共性和特徵,類是物件的抽象,而物件是類的具體例項,類是抽象的,不占用記憶體,而物件是具體的,占用 儲存空間,這點很重要,讀者需要牢記。類是使用者自己指定的型別,如果程式中要用到類型別,必須自己根據需要進行宣告,或者使用別人已設計好的類,c 標準本身並不提供...