C++類的靜態成員,友元和常成員常對象

一、類的靜態成員

靜態成員是解決同一個類的不同對象之間數據和函數共享問題的。

1.靜態數據成員(static data member)

(1)靜態數據成員在每個類中只有一個拷貝,由所有該類的對象共同維護,從而實現同一個類的不同對象數據共享;一般數據成  員,是實例屬性,每個對象擁有一個拷貝。

(2)靜態數據成員只能通過類名和靜態函數成員對它進行訪問,類名訪問方法“類名::標示符”;靜態成員函數訪問方法同一般的函數訪問方法。

2.靜態函數成員(static function member)

(1)靜態函數成員同靜態數據成員一樣在每個類中只有一個拷貝,由所有該類的對象共同維護,從而實現同一個類的不同對象數據  共享。
(2)公共的靜態函數成員,可以通過類名或者對象來調用;普通函數成員只能通過對象調用,不用通過類名調用。
(3)靜態函數成員可以直接訪問該類的靜態數據和函數成員。而訪問非靜態數據成員必須通過參數傳遞方式得到對象名,然後通過  對象名來訪問。
(4)靜態函數成員主要作用是訪問類的靜態數據成員。其好處是不依賴任何對象可以直接訪問靜態數據。

二、類的友元

友元關係提供了不同類或對象的成員函數之間、類的成員函數與一般函數之間的數據共享機制。
友元函數:友元函數是在類中用關鍵字friend修飾的非成員函數,作用是在它的函數體中可以通過對象名訪問類的私有和保護成員。
友元類:若A類位B類的友元類,則A類的所有的成員函數都是B類的友元函數,都可以訪問B類的私有成員和保護成員。方法通過在B類中用 friend class A來聲明。
友元注意問題:友元關係不能傳遞;友元關係是單向的;友元關係是不被繼承的。

三、const

1.常引用

常引用引用的對象不能被更新。

2.常對象

類名 const 對象名;
常對象必須進行初始化,而且不能被更新。如何保證常對象的值不被改變:常對象不能對在類外對其數據成員賦值;常對象不能調用普通的成員函數(常對象只能調用類中的常成員函數)。

3.類中的常成員函數

聲明格式:類型說明符  函數名(參數)const
(1)const是函數類型的一部分,因此在函數的定義部分也要帶const關鍵字。
(2)常成員函數不能更新對象的數據成員,也不能調用該類中沒有用const修飾的成員函數。
(3)如果將一個對象說明爲常對象,則通過該對象只能調用它的常成員函數,而不能調用其它成員函數。
(4)const關鍵字可以用於對重載函數的區分,例如,如果在類中這樣聲明:
 void print();
 void print()const;
這是對print的有效重載。

4.類中的常數據成員

使用const說明的數據成員爲常數據成員。如果在一個類中說明了常數據成員,那麼任何函數中都不能對該成員賦值。構造函數對該數據成員進行初始化,就只能通過初始化列表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章