1. 程式人生 > >c++簡記—類和物件

c++簡記—類和物件

5.2 類的定義
類體中定義類的資料和方法,其中資料描述的是類的特徵,也稱之為屬性或資料成員,方法實際上是類中定義的函式,也稱之為方法,描述的是類的行為。
5.3 類的例項化
在定義一個類之後,並不能夠直接使用類,需要定義一個類的物件,通常也成為類的例項化。
定義類時,如果沒有類成員的訪問級別,則不能通過編譯。
類成員有種訪問級別,分別是public、protected和private
public標記的成員成為共有成員,public成員可以在程式的任意地方進行訪問。
protected標記的成員成為保護成員,該成員只能在該類和該類的派生(子類)中訪問,除此之外,程式的其他地方不能訪問保護成員。
private標記的成員成為私有成員,該成員只能在該類中訪問,派生類以及程式的其他地方均不能訪問私有成員。
如果在定義類時沒有指定訪問限定符,預設為private.
5.4 建構函式和解構函式
在c++語言中,每一個類都具有建構函式和解構函式。
建構函式在定義或構建物件時呼叫,解構函式在物件釋放時呼叫。如果使用者沒有顯示地為類提供建構函式和解構函式,系統會為其提供預設的建構函式和解構函式。
在編寫c++類時,通常在建構函式中初始化資料成員,在解構函式中釋放一些資源,進行物件的清理工作。


5.13 隱藏的this指標
在定義多個類物件時,每一個類物件都有自己的一份資料成員(靜態成員除外).
char* GetUserName() const{
return (char*)m_Username;
}
在GetUserName函式體中如何區分m_Username成員屬於User物件還是defUser物件呢?答案是通過this指標。
在每個類的成員函式(非靜態成員函式)中都隱藏包含一個this指標,指向被呼叫物件的指標,對於非const方法,this指標的格式為“型別* const this”,在const方法中,
this指標的格式是“const型別* const this”.
實際上,編譯器為了實現this指標,在成員函式中自動添加了this指標對資料成員的訪問。此外,為了將this指標指向當前呼叫物件,並在成員函式中能夠使用,在每個成員
函式中都隱含包含一個this指標作為函式引數,並在函式呼叫時將物件自身的地址隱含作為實際引數傳遞。