c++類中主要含有兩種成分,即資料成員和成員函式,其中成員函式又稱為方法。
成員函式的定義通常有兩種方式,第一種方式是在類宣告中只給出成員函式的原型,而成員函式體在類的外部定義。這種成員函式定義的一般形式是:
返回型別 類名::函式名(參數列)
例如,座標點的類point可這樣宣告:
class
point
;//定義
void point::
setpoint
(int a,
int b)
int point::
getx()
int point::
gety()
從這個例子可以看出,雖然函式 setpoint( )、getx( )和 gety( ) 在類外部定義,但它們屬於類 point 的成員函式,它們可以直接使用類 point 中的資料成員 x 和 y。
說明:⑴在所定義的成員函式名之前應綴上類名,在類名和函式名之間應加上分隔符 「∷」,例如上面例子中的「point∷」。
⑵在定義成員函式時,對函式所帶的引數,不但要說明它的型別,還要指出其引數名。
⑶在定義成員函式時,其返回型別一定要與函式原型中宣告的返回型別匹配。
成員函式的第二種定義方式是:將成員函式定義在類的內部,即定義為內建函式。在c++中,可以用下面兩種格式定義類的內建函式:
⑴隱式定義所謂內建函式的隱式定義,就是直接將函式定義在類內部,例如:
class
point
intgetx()
intgety()
};
此時,函式 setpoint( )、getx( )和 gety( )就是隱含的內建函式。內建函式的呼叫類似巨集指令的擴充套件,它直接在呼叫處擴充套件其**,而不進行一般函式的呼叫操作。
⑵顯式定義在定義內建函式時,為了書寫清晰,仍將它放在類定義體外。但為了使它仍然起內建函式的作用,在函式定義前冠以關鍵字「inline」,以此顯式地說明這是一 個內建函式。例如上面的例子改為顯示定義可變成如下形式:
class
point
;inline
void point::
setpoint
(int a,
int b)
inline
int point::
getx()
inline
int point::
gety()
說明:簡單的成員函式定義成內建函式可以提高執行的效率,但如果函式體較長,將使程式量增加很多。因此,一般對非常簡單的函式才宣告為內建函式。 靜態成員變數與靜態成員函式的宣告與定義
類的靜態成員變數在類中只能宣告,定義和初始化要在類外 class myclass int myclass a 10 類外定義和初初化,注意,這時不需要帶static也有些編譯器支援在類內定義並初始化,但大多數編譯器不支援,所以安全的做法還是類內宣告,類外定義和初始化。類的靜態成員函式的宣告和定義與普...
c 學習之const成員變數與成員函式
常型別是指用型別修飾符const說明的型別,常型別的變數或者物件的值是不能被更新的。因此,定義或說明常型別時必須初始化。如果在乙個類宣告常資料成員,那麼任何函式中都不能對該成員賦值。建構函式對該成員進行初始化,只能通過初始化列表來實現。include using namespace std clas...
c 學習靜態資料成員與靜態成員函式
此次主要想要學習靜態資料成員與靜態成員函式 靜態是以static進行宣告 其是屬於類而不屬於物件 即乙個類只會對靜態分配乙個儲存空間,無論建立n個物件,靜態成員的儲存只會有乙個,而其他非靜態成員會有n個 靜態成員必須在類外進行初始化 例如我這次忘記定義 int student total 0 系統一...