標籤:
類
類是一種抽象和封裝機制,描述一組具有相同屬性和行為的對象,是代碼複用的基本單位。
類成員的存取權限
物件導向關鍵特性之一就是隱藏資料,採用機制就是設定類成員的存取控制許可權。類成員有3種存取權限:
- 公有類型:由關鍵字public聲明,在類外只能訪問公有成員。
- 私人類型:由關鍵字private聲明,私人成員只能被類本身的成員函數訪問。
- 保護類型:由protect聲明,與私人成員類似,區別僅在於繼承過程中,保護類型的成員可以被所在類的衍生類別成員函數訪問。
此處注意區分類的成員函數和類對象。
一般來說,公有成員是類的對外表現,而私人成員是類的內部實現,不希望外界瞭解。
成員函數的實現
類的資料成員說明了對象的特徵,而類的成員函數決定對象的操作行為。成員函數是演算法的實現部分,是對封裝的資料進行操作的唯一途徑。其實現方式可分為類內實現和類外實現。類外實現形式如下:
傳回值類型 類名::成員函數名(形式參數表)
{
函數體;
}
類對象
對象是類的執行個體,系統不會為抽象的類分配儲存空間,但卻要為對象分配相應的記憶體空間。但這個記憶體空間只能用於存放對象的資料成員,其成員函數不在每個對象中的儲存副本。
建構函式
對象的建立比普通變數的建立複雜,它需要在分配記憶體空間的同時將資料成員的初始值一併寫入。建構函式的作用是在對象被建立時利用特定的值構造對象。
聲明一個建構函式的文法格式如下:
public:
類名(<參數表>);
建構函式是類的一個特殊成員函數,它的函數名與類名相同,可以有任意類型的參數,但不能有傳回型別。當建立一個新對象時,編譯器會自動調用建構函式。建構函式可以自己編寫提供;如果不提供,編譯器會自動產生一個不帶參數的預設建構函式(不做任何具體工作)。
重載建構函式:
所謂重載建構函式,是指同一個建構函式名,其參數表不同。注意:當建構函式帶預設參數時,要避免出現歧義。
拷貝建構函式:
拷貝建構函式就是用來複製對象的一種特殊的建構函式。通過它,可以使用一個已經建立好的對象(由拷貝建構函式的參數指定)去初始化一個正在建立的同類對象。
聲明拷貝建構函式的文法格式如下:
class 類名
{
public:
類名(類名 & 對象名);
};
拷貝建構函式只能有一個參數,而且是對某個同類對象的引用。每個類都必須有一個拷貝建構函式,如果該函數的功能僅僅是將已建立對象資料成員的值賦給正在建立對象的資料成員,那麼沒有必要顯示定義它,而由編譯器自動產生一個具有上述形式的預設拷貝狗仔函數。
解構函式
解構函式與建構函式的作用幾乎相反,當一個對象消失時,或用delete刪除用new建立的對象時,系統都會自動調用類的解構函式做一些清理工作。它調用完成後,對象就消失了,其相應的記憶體空間也就被釋放了。
聲明一個解構函式的文法格式如下:
class Demo
{
public:
Demo(<參數表>);
~Demo(void);
}
解構函式的函數名與類名相同,只是在前面加上一個"~"。它沒有參數和傳回值,但可以是虛函數。由於一個類只能定義一個解構函式,所以解構函式不能重載。解構函式調用順序是最後建立的對象最先消亡。
【C++】類和對象(構造與析構)