在c++中,乙個類會有很多的成員方法,可以分為三類:(1)public:公有的,可供使用者呼叫(2)private:私有的,供成員方法自己呼叫(3)protected:在類的繼承中體現;而所有的成員方法除此之外有著不同的屬性,比如有些用於更改屬性,有些用於讀取某個屬性的量,來看看他們的不同以及c++標準對它們的應對之策。
class string
private:
char
*mpstr;
};
他的析構函式在編譯後就會變成這樣的形式:
~
string
(string *this)
這也就是為何在呼叫成員方法時不需要傳入物件,而且不出錯的原因。
在我們編寫**時,一般的方法都是直接寫不加任何關鍵字的,這種成員方法也稱為普通成員方法,普通成員方法有以下特性:
1.屬於類的作用域;
2.呼叫時必須依賴乙個物件;
3.可以任意的訪問物件自己的私有成員。
而對常物件,即加了const修飾的物件,它在訪問成員方法時,生成的this指標就變成了const *this,由於指標型別的不同,導致它無法訪問普通成員方法,所以我們需要對應的給常物件增加乙個常成員方法,他的定義形式如下:
返回值 函式(引數列表)
const
而且在編寫類的成員函式時,我們一般把唯讀成員方法都實現成常成員方法,這樣可以避免對其更改。但注意,常成員方法可以被普通物件和常物件呼叫,並不是只有常物件可呼叫。
在類中我們可以設定靜態成員變數,一般用於整個類所共享的量,例如統計類對應生成的物件的個數,它屬於整個類共享,而不是對某個物件的私有,它有以下幾個特點:
1.靜態成員變數只初始化一次,且所有物件共用乙個靜態成員變數;
2.靜態成員變數在類體內宣告,在外部定義;
3.靜態成員變數不屬於物件,而是屬於類級別的;
為了使邏輯通順所以一般對於靜態成員變數進行操作的方法都實現成靜態成員方法,靜態成員方法不生成this指標,所以在呼叫時不需要借助物件,他的呼叫方法為:
類名:
:靜態成員方法名
而且因為沒有this指標,所以和靜態成員方法不能訪問普通的成員變數,只能訪問其它的靜態成員變數。
一般我們把成員變數的初始化方法都寫在建構函式中,而對於乙個類包含另乙個類時,這種方法會出錯誤,所以提供了類的初始化列表這種初始化操作的方法,它的格式如下:
cgoods
(const
char
*_name,
int _amount,
double _price,
int y,
int m,
int d)
:_date
(y,m,d)
//建構函式的初始化列表
,amount
(_amount)
,price
( _price)
//使用引數直接對成員變數進行初始化
這種方法可以直接對要構造的物件進行初始化,免去了一些中間部分,所以效率也比較高,可以在實踐中多用用。 成員變數,類變數,成員方法,類方法
成員變數 包括例項變數和類變數,用static修飾的是類變數,不用static修飾的是例項變數,所有類的成員變數可以通過this來引用。類變數 靜態域,靜態字段,或叫靜態變數,它屬於該類所有例項共有的屬性。而且所有的例項都可以修改這個類變數的值 這個類變數沒有被final修飾的情況 而且訪問類變數的...
關於例項成員與類成員的區別
1.例項成員 例項成員包括例項成員變數和例項成員方法,例項成員變數 物件的字段 和方法 物件的方法 是隸屬於物件的,例項變數的值代表了該物件的狀態,例項成員方法代表了該物件的行為。只有建立了物件之後才能訪問例項成員變數和例項成員方法,通過 物件名.變數名 方法名 的方法可以訪問例項成員 2.類成員 ...
物件導向 例項成員 類方法 類成員
1.語法 1 定義 物件.變數名 2 呼叫 物件.變數名 2.說明 1 首次通過物件賦值為建立,再次賦值為修改.w01 wife w01.name 麗麗 w01.name 莉莉 2 通常在建構函式 init 中建立。w01 wife 麗麗 24 print w01.name 3 每個物件儲存乙份,通...