類的成員函式

2021-10-06 15:29:49 字數 1818 閱讀 8923

一:建構函式

(1)定義

建構函式是乙個特殊的成員函式,名字與類名相同,建立類型別物件時由編譯器自動呼叫,保證每個資料成員都有 乙個合適的初始值,並且在物件的生命週期內只呼叫一次。

(2)特性

a、函式名與類名相同。

b、無返回值。

c、物件例項化時編譯器自動呼叫對應的建構函式。

d、建構函式可以過載。

e、如果類中沒有顯式定義建構函式,則c++編譯器會自動生成乙個無參的預設建構函式,一旦使用者顯式定義編譯器將不再生成。

f、無參的建構函式和全預設的建構函式都稱為預設建構函式,並且預設建構函式只能有乙個。注意:無參建構函式、全預設建構函式、我們沒寫編譯器預設生成的建構函式,都可以認為是預設成員函式。

注意:建構函式的主要任務不是開闢空間建立物件,而是初始化物件。

二:析構函式

(1)定義

析構函式:與建構函式功能相反,析構函式不是完成物件的銷毀,區域性物件銷毀工作是由編譯器完成的。而物件在銷毀時會自動呼叫析構函式,完成類的一些資源清理工作。

(2)特性

1.析構函式名是在類名前加上字元 ~。

2. 無引數無返回值。

3. 乙個類有且只有乙個析構函式。若未顯式定義,系統會自動生成預設的析構函式。

4. 物件生命週期結束時,c++編譯系統系統自動呼叫析構函式。

5. 編譯器生成的預設析構函式,對會自定義型別成員呼叫它的析構函式。

注意:析構函式是特殊的成員函式。

三:拷貝建構函式

(1)定義

建構函式:只有單個形參,該形參是對本類型別物件的引用(一般常用const修飾),在用已存在的類型別物件建立新物件時由編譯器自動呼叫。

(2)特性

1.拷貝建構函式是建構函式的乙個過載形式。

2.拷貝建構函式的引數只有乙個且必須使用引用傳參,使用傳值方式會引發無窮遞迴呼叫。

3.若未顯示定義,系統生成預設的拷貝建構函式。 預設的拷貝建構函式物件按記憶體儲存按位元組序完成拷貝,這種拷貝我們叫做淺拷貝,或者值拷貝。

四:賦值運算子過載

(1)運算子過載

c++為了增強**的可讀性引入了運算子過載,運算子過載是具有特殊函式名的函式,也具有其返回值型別,函式名字以及引數列表,其返回值型別與引數列表與普通的函式類似。

函式名字為:關鍵字operator後面接需要過載的運算子符號。

函式原型:返回值型別 operator操作符(引數列表)。

(2)特性

1.不能通過連線其他符號來建立新的操作符:比如operator@。

2.過載操作符必須有乙個類型別或者列舉型別的運算元。

3.用於內建型別的操作符,其含義不能改變,例如:內建的整型+,不能改變其含義。

4.作為類成員的過載函式時,其形參看起來比運算元數目少1的成員函式。

5.操作符有乙個預設的形參this,限定為第乙個形參。

6…* 、:: 、sizeof 、?: 、. 注意以上5個運算子不能過載。

五:const成員

將const修飾的類成員函式稱之為const成員函式,const修飾類成員函式,實際修飾該成員函式隱含的this指標,表明在該成員函式中不能對類的任何成員進行修改。

類的成員函式

定義類的成員函式 儘管所有成員都必須在類的內部宣告,但是成員函式體可以定義在類的內部也可以定義在類外。定義在類的內部的函式隱式inline函式。引入this 成員函式通過乙個名為this的額外的隱式引數來訪問呼叫它的那個物件。當我們呼叫乙個成員函式時,用請求該函式的物件位址初始化this。例如,如果...

指向類資料成員 類成員函式的指標

成員指標是指可以指向類的非靜態成員的指標,一般情況下指標指向乙個物件,但是成員指標指示的是類的成員,而非類的物件,類的靜態成員不屬於任何物件,因此無須特殊的指向靜態成員的指標,指向靜態成員的指標與普通指標沒有什麼區別,成員指標的型別囊括了類的型別以及成員的型別,當初始化乙個這樣的指標時,我們令其指向...

類的靜態成員函式

在一次 移動和重組編輯中,發現有一些函式是幾個類共用的一些演算法實現函式,使用了類的靜態成員函式。新增乙個類utility,如下所示 class utility 在使用該靜態成員函式時 if utility incircle 直接使用類名作為限定符來呼叫靜態成員函式即可,不需要宣告該類的物件。也可以...