C++ Primer Plus學習筆記之靜態成員
關鍵字static可以用來說明一個類的成員(包括數據成員和成員函數),這樣的成員被稱為靜態成員;
1,靜態數據成員
在一個類中,若將一個數據說明前加上static,則該數據成為靜態數據,靜態數據成員被該類的所有對象共享。無論建立多少個該類的對象,都只有一個靜態數據存儲空間;
具體語法如下:
類型名 類名::靜態數據成員[=常量表達式]
其中,常量表達式用於初始化類的靜態數據成員;
靜態數據成員屬於類,而不屬於對象,因為靜態成員的存在是不依賴於某個具體的對象的。在這個意義下,在類對象不存在的情況下,我們也可以訪問到類的靜態成員。
2,靜態成員函數
與靜態數據成員一樣,靜態成員函數屬於類而不是某個類對象;因此在類外調用一個共有的靜態數據成員函數,不需要指明對象或者指向對象的指針,具體方式為:
類名::靜態成員函數名(參數列表)
一般使用靜態成員函數來訪問靜態數據成員;
若在靜態成員函數中要訪問非靜態成員時,必須明確地指明該靜態成員函數在哪個對象上操作,必須需要通過對象或者指向對象的指針進行,因此需要類類型作為靜態成員函數的參數類型(出非使用全局對象);
#include
using namespace std;
class Integer
{
public:
void Display();
static void Fun(int num1,int num2,Integer *ptr);
private:
int member_int;
static int static_int;
};
int Integer::static_int=0;
void Integer::Fun(int num1,int num2,Integer *ptr)
{
//member_int=num1; 錯誤,不知對哪個對象上的member_int進行操作
ptr->member_int=num1;//正確
static_int=num2;//正確
}
void Integer::Display()
{
cout<<"member_int="<