類與物件複習總結

2021-08-19 03:56:05 字數 3578 閱讀 5808

類是對具有相同屬性和行為的一組物件的抽象與統一描述。是使用者自定義的資料型別,類包括行為與屬性兩部分,屬性以資料成員表示,行為通過成員函式實現。c++中預設類的成員訪問許可權是私有的,成員函式重點是對類中的資料成員做操作。

類的定義是

class 類名

; (類在定義完需要在大括號後加上;號。如果私有成員放在第一段,則可以省略關鍵字private)

類的成員函式是實現類的行為屬性的成員。一般將成員函式宣告為函式原型,在類外具體實現成員函式。類成員初始化時,按照資料成員在類中的宣告順序進行初始化,與初始化成員列表中出現順序無關。

成員函式的定義 

返回值型別  類名::成員函式名(參數列)

::為作用域區分符,他屬於標識屬於什麼類的成員。簡單的成員函式實現可以再類中定義,此時,編譯器作為內聯函式處理。

資料成員定義

資料成員除了可以是類的基本型別外,還可以是陣列、結構、類等定義的資料型別。對資料成員的初始化不能再定義中進行  

物件的定義:類名 物件名1,物件名2,....,物件名n;

物件有兩種方式,一種是靜態方式,類似變數,另一種是動態方式,指標變數。物件不要定義為全域性物件。類的成員可以是其它類的物件,但不能以類自身的物件作為本類的成員,而類自身的指標和引用可以作為類的成員。注意,必須在定義了類之後,才可以定義類的物件。

物件成員的訪問包括:

圓點訪問形式:物件名.公有成員

指標訪問形式:物件指標變數名->公有成員

函式過載:函式名相同,但引數不相同(型別不同,或者個數不同)的一組函式。編譯器根據不同引數的型別和個數產生呼叫匹配。

建構函式和析構函式:

建構函式是用於建立物件的特殊成員函式,

當建立物件時,系統自動呼叫建構函式。建構函式一般別定義為公有成員。定義類時,定義建構函式一般定義兩個。建構函式的作用是為物件分配空間;對資料成員賦初值;請求其他資源。沒有使用者定義的建構函式時,系統提供預設版本的建構函式(預設建構函式形式:類名::類名(){} )當使用者定義了建構函式後,預設的函式不再起作用。建構函式的命名必須與類名相同,建構函式可以過載,可以有任何型別的引數,但是沒有返回值型別。

利用建構函式建立物件時,可以用一般形式:

類名 物件名(實參表)

或者是指標形式:

類名*指標變數 = new 類名(實參表)。 

建構函式初始化有兩種方法,一是使用建構函式的函式體進行初始化 ;另一種是使用建構函式的初始化列表進行初始化。 在有些情況下必須使用初始化列表進行初始化,1.資料成員為

常量2.資料成員為

引用型別3.資料成員為

沒有無參建構函式的類

的物件。

析構函式實在物件生存期結束後進行清理工作,

析構函式自動呼叫(隱式呼叫)析構函式沒有返回值,不能有引數,也不能過載,並且在乙個類中只能有乙個析構函式。析構函式的定義和其他函式不同,析構函式需要在函式名之前加上~符號。

一般情況下,可以不定義析構函式但如果類的資料成員中包含指標變數是從堆上進行儲存空間分配的話,需要在析構函式中進行儲存空間的**。

this指標:this指標在類內使用。在同一變數出現時生存空間小的起作用。

需要使用this指標的三種情況: 1

在類的非靜態成員函式中返回類物件本身或物件的引用的時候,直接使用return *this,返回本物件的位址時,return this。

2 當引數與成員變數名相同時,如this->x = x,不能寫成x = x。

3避免對同一物件進行賦值操作,判斷兩個物件是否相同時,使用this指標。

複製建構函式:

複製建構函式是用乙個已有同類物件建立新物件進行資料初始化,

c++為類提供預設版本的複製建構函式,程式設計師可以定義使用者版本的複製建構函式。

語法形式:類名::類名(const 類名 &引用名,...);(const的作用是保護實參物件唯讀)

複製建構函式的特點:

1複製建構函式名與類名相同,同樣沒有返回值型別。2複製建構函式可以寫在類中,也可以寫在類外。3複製建構函式要求有乙個類型別的引用引數。4如果沒有顯式定義複製建構函式,系統自動生成乙個預設形式的複製建構函式。

淺複製:再用乙個物件初始化另乙個物件時,只複製了資料成員,而沒有複製資源,使用兩個物件同時指向了同一資源的複製方式稱為淺複製。就是對於複雜型別的資料成員值複製了簡單儲存位址而沒有複製儲存內容。預設複製建構函式所進行的是簡單資料複製,即淺複製 。

深複製:通過乙個物件初始化另乙個物件時,不僅複製了資料成員,也複製了資源的複製方式稱為深複製。自定義複製建構函式所進行的複製是淺複製。深複製建構函式必須顯示定義。特點:1定義:類名::類名([const] 類名 &物件名);2成員變數的處理:對複雜型別的成員變數,使用new操作符進行空間的申請,然後進行相關的複製操作。

類的其他成員:

常成員:唯讀不寫的成員。

常資料成員的定義是在型別前加上const,這樣資料成員初始化就只能通過初始化列表對該資料成員進行初始化。

在類的成員函式說明後面可以加const關鍵字,則該成員函式成為常量成員函式。如void printstudent()const;

常物件:

如果在說明物件時用const修飾,則被說明的物件為常物件。

常物件的說明形式如下:

類名  const  物件名(參數列);或者const  類名 物件名(參數列);在定義常物件時必須進行初始化,而且不能被更新。常物件不能直接或間接的更改資料成員,只能呼叫常成員函式、靜態成員函式、建構函式(具有公有訪問許可權)。

靜態成員:

類成員冠以static宣告時,稱為靜態成員。靜態資料成員為同類物件共享。 靜態成員函式與靜態資料成員協同操作。靜態成員不屬於某乙個單獨的物件,而是為類的所有物件所共有。靜態成員函式的作用不是為了物件之間的溝通,而是為了能處理靜態資料成員:保證在不依賴於某個物件的情況下,訪問靜態資料成員。靜態成員必須在類外進行定義並初始化(

型別 類名::靜態資料成員[=初始化值]; )。

靜態成員函式:

靜態函式僅可以訪問靜態成員或是靜態成員函式或是靜態資料成員。靜態成員函式沒有this指標,只能對靜態資料操作。

靜態成員函式在類外定義時不用static字首。靜態成員函式不訪問類中的非靜態資料成員。如有需要,只能通過物件名(或指向物件的指標)訪問該物件的非靜態成員(

small_cat

::display(w3);)。

友元函式:

在類外定義乙個非成員函式或者另乙個類的成員函式,如果在類體中用friend函式進行宣告,那麼此函式就稱為這個類的友元函式。函式可以訪問類的私有資料成員。

類的包含:

類的包含是程式設計中一種軟體重用技術。即定義乙個新的類時,通過編譯器把另乙個類「抄」進來。 當乙個類中含有已經定義的類型別成員,帶引數的建構函式對資料成員初始化,須使用初始化語法形式。建構函式 ( 形參表 ) : 物件成員1(形參表 ) , … , 物件成員n (形參表 ) ;

物件陣列:

所謂物件陣列是指每一陣列元素都是物件的陣列。定義乙個一維物件陣列的格式如下

: 類名陣列名

[ 下標表示式

]; 物件陣列的初始化:

1當物件陣列所屬的類中包含帶參的建構函式,可用初始化列表完成物件陣列的初始化。

2當物件陣列所屬的類中包含無參的建構函式,也可以先定義,再給每個陣列元素賦值。

3當物件陣列所屬的類中包含單個引數的建構函式,可簡寫。

類與物件複習總結1

一.類的定義 類是對具有相同屬性和行為的一組物件的抽象與統一描述 類的定義包括行為和屬性兩個部分 屬性以資料成員表示,行為通過成員函式實現 定義格式 class 類名 注意 類的成員可以是其他類的物件,但不能以類自身的物件作為本類的成員,而類自身的指標和引用可以作為類的成員 類定義必須以分號 結束 ...

C 類與物件 複習筆記

類與物件 類是物件的抽象,而物件是類的具體例項 類是抽象的,不占用記憶體,而物件是具體的,占用儲存空間 面向過程與物件導向 c語言是面向過程的,關注的是過程中的資料與方法 c 是物件導向的,關注的是物件的屬性與功能 類的定義 類的成員函式預設是內聯的。除了類外定義且不加inline關鍵字。類的兩種定...

類與物件總結

一般的資訊管理系統多是需要兩種類 資料類和操作類 資料類 提供實際所需的各種資料 操作類 實現實際操作功能 多為增刪查改 乙個成員函式實現乙個具體功能 資訊管理系統開發基本步驟 1思考分析系統所需各種資料,並設計資料類 前提 2了解系統要實現各種功能,並設計操作類 3除錯程式 滾雪球法,一步一調。最...