c 基礎學習筆記 成員函式的宣告與定義

2021-10-03 11:14:18 字數 1401 閱讀 4987

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 系統一...