如上所述, 類中含有兩種成份,即資料成員和成員函式, 其中成員函式也稱方法。實際上,成員函式和方法指的是同一種實體, 是一種實體的兩種不同叫法, 成員函式是程式語言 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 ...