第十一章 靜態成員和友元函數
11.1 靜態成員this
1.C++類當中的靜態數據成員仍借用保留字static,可是與以前的靜態全局變量,靜態局部變量以及靜態函數沒有關係。指針
2.靜態數據成員不佔用具體對象的數據空間。對象
3.靜態數據成員的建立和銷燬處分權不屬於任何對象。對象有權利讀和寫靜態成員。靜態成員應該在建立任何具體對象以前就能夠訪問,因此要求靜態成員在建立類的任何對象變量
以前就要存在(猶如全局變量、全局對象在main函數前面執行同樣)所以靜態數據成員應該在主函數以前先定義初始化。數據類型
4.靜態數據成員不能沒有定義也不能不定義。應該將類的靜態數據成員定義和初始化語句放在類的內部實現源文件當中。語法
格式爲: 數據類型 類名::靜態數據成員名=初始化值;數據
或者: 數據類型 類名::靜態數據成員名(初始化值); (在這裏不能再寫保留字static)static
5.靜態數據成員的生命期是全局的,與是否建立了對象沒有關係。文件
6.要訪問靜態數據成員的時候,能夠用對象訪問也更通常是用類名訪問。
對象名.靜態數據成員名
類名::靜態數據成員名
7.靜態成員函數的聲明語法格式: static 返回類型 靜態成員函數名(形式參數表)在類體外定義的時候不能添加保留字static!
8.靜態成員函數能夠被該類全部對象所使用,可是注意靜態成員函數沒有隱含傳遞所謂的「本對象地址」的指針形式參數this,只能顯式地傳遞對象做爲參數。
11.2友元
1.友元不是類的成員。
2.友元分爲友元類和友元函數。
3.友元函數在類聲明當中就在前面加一個friend表示函數不是本類成員,而是本類的友元函數。
4.友元函數在處理具體對象的時候須要將對象顯式地傳遞給函數。
4.友元類:聲明一個類是另外一個類的友元,成爲友元類。友元類當中的全部成員函數都是本類的友元函數,都可以訪問本類中的全部成員。