成員函式的定義

2021-10-05 19:33:29 字數 1560 閱讀 5057

如上所述, 類中含有兩種成份,即資料成員和成員函式, 其中成員函式也稱方法。實際上,成員函式和方法指的是同一種實體, 是一種實體的兩種不同叫法, 成員函式是程式語言 c + + 中的術語,而方法是物件導向方法中的術語。在以後的敘述中, 本書採用術語成員函式。

成員函式的定義通常採用兩種方式。

第一種方式是在類宣告中只給出成員函式的原型, 而成員函式體在類的外部定義。這種成員函式定義的一般形式是:

返回型別 類名∷函式名(參數列)

例如,表示座標點的類 point 可宣告如下:

class

point

;void point∷setpoint

(int a,

int b)

// 定義成員函式 setpoint( )

int point∷getx()

// 定義成員函式 getx( )

int point∷gety()

// 定義成員函式 gety( )

從這個例子可以看出,雖然函式 setpoint( )、getx( )和 gety( ) 在類外部定義, 但它們屬於類 point 的成員函式, 它們可以直接使用類 point 中的資料成員 x 和 y。

在所定義的成員函式名之前應綴上類名, 在類名和函式名之間應加上分隔符 「∷」,例如上面例子中的「point∷」。

在定義成員函式時, 對函式所帶的引數, 不但要說明它的型別, 還要指出其參 數名。

3.在定義成員函式時, 其返回型別一定要與函式原型中宣告的返回型別匹配。 成員函式的第二種定義方式是:將成員函式定義在類的內部, 即定義為內建函式。在 c + + 中, 可以用下面兩種格式定義類的內建函式:

(1 )隱式定義

所謂內建函式的隱式定義, 就是直接將函式定義在類內部,例如:

class

point

intgetx()

int gety ()}

;

此時, 函式 setpoint( )、getx( )和 gety( )就是隱含的內建函式。內建函式的呼叫類似巨集指令的擴充套件,它直接在呼叫處擴充套件其**, 而不進行一般函式的呼叫操作。

(2 )顯式定義

在定義內建函式時, 為了書寫清晰,仍將它放在類定義體外。但為了使它仍然起內建函式的作用, 在函式定義前冠以關鍵字「inline」, 以此顯式地說明這是乙個內建函式。例如上面的例子改為顯示定義可變成如下形式:

class

point

;inline

void point∷setpoint

(int a,

int b)

inline

int point∷getx()

inline

int point∷gety()

說明:簡單的成員函式定義成內建函式可以提高執行的效率, 但如果函式體較長, 將使程式量增加很多。因此,一般對非常簡單的函式才宣告為內建函式。

冒號 定義成員函式 5)類的申明和成員函式定義分離

前面我們學習了如何定義類,以及如何使用類的成員,在前面我們把成員函式都定義在了類的內部,接下來我們學習,如何把類的定義和成員函式的實現分離。在物件導向的程式開發中,一般做法是將類的宣告 其中包含成員函式的宣告 放在指定的標頭檔案中,使用者如果想用該類,只要把有關的標頭檔案包含進來即可,不必在程式中重...

如何定義成員函式?

兩種方法 在class 類 中定義成員函式。類似定義普通函式。返回值型別 函式名 形參表 函式體全部寫在類中。在class 類 外定義成員函式。類似是普通函式寫在main函式下面,必須在main函式前進行函式宣告 亦函式原型or函式基調 一樣。在class外定義成員函式時,要在class 類 內對成...

Time類的定義(成員函式)

time limit 1000ms memory limit 65536k 通過本題目的練習可以掌握類與物件的定義 設計乙個時間類 time 私有資料成員有 hour 時 minute 分 second 秒 公有成員函式有 sethour int 設定資料成員 hour 的值,非法的輸入預設為12 ...