C 學習摘要之一 類和物件

2021-08-22 06:24:04 字數 2552 閱讀 2484

第一章 類和物件

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

類定義的一般形式為:

class 類名 ;

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

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

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

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

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

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

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

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

類名物件名錶;

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

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

類名*指標變數名;

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

(1)物件名.成員名

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

如,已知乙個類example,則:

example obj1,obj2;

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

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

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

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

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

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

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

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

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

example array[10];

表明array

陣列是乙個一維物件陣列,該陣列有

10個元素,從

array[0]

到array[9]

,其中每個元素都是類

example

的物件。

C 學習(一) 類與物件

大二時學校開過物件導向程式設計 c 語言 的課,使用的是清華大學出版社,李愛華 程磊主編的教材。近兩年在學習和專案中一直使用c,對於c 已經忘記得差不多了。如今大四畢業之際開始學習qt開發上位機,需要用到c 使用原教材再次學習一次。類與物件是c 中兩個基本的概念。可以理解類是資料型別,物件是類定義的...

Java學習(一) 類和物件

一 物件 在街上偶遇乙個明星,那麼該明星就可以被定義為乙個物件,那麼該物件有兩方面的定義 狀態和行為。明星有狀態 年齡,身高,體重,籍貫。明星有行為 唱歌,跳舞,彈琴,拍照。所以,物件可以定義成包含狀態和行為的實體,物件 object 也稱為例項 instance 實體是存在於現實世界中並且可以與其...

C 學習摘要之 一

一 c 的特點 1 語法簡潔 c 不允許直接記憶體操作 c 沒有指標 c 的關鍵字更加明了.2 物件導向設計 c 中的每種型別都可以當作是物件 c 只允許單繼承,也沒有全域性變數和全域性常數,所有的一切都必須封裝在 乙個類中,使 具有更好的可讀性,差減少命名衝突的可能.3 與web緊密結合 網路服務...