C++關鍵字static

static

static用來聲明靜態成員,包括靜態數據成員和靜態成員函數,它們被類的所有對象共享,實現一個類的不同對象之間的數據共享eg:統計總數、平均數。

靜態數據成員存放在靜態存儲區,sizeof()的內存空間大小時不包括靜態成員變量的大小;與普通的數據成員不同,無論創建多少個類的對象,都只有一個靜態數據成員的拷貝,從而實現一個類的不同對象之間的數據共享。使用靜態數據成員可以不必使用全局變量(也可以達到多個對象共享的目的):使用全局變量會帶來不安全性,違反了面向對象程序設計的封裝特性。

靜態成員函數與非靜態成員函數的區別:非靜態成員函數有this指針,靜態成員函數沒有this指針;靜態成員函數爲類的所有對象共享,不與任何對象相關聯,因此不具有this指針。

靜態成員函數不能被聲明爲虛函數,靜態成員函數對於每一個類只有一份代碼,所有的對象共享這份代碼,它不歸某個對象所有,所以沒有動態綁定的必要性

靜態成員函數不同聲明爲const:聲明爲const (依賴於對象)是承諾不會修改對象的數據成員,而static成員函數不屬於任何對象。

this指針是一個自引用指針,它的值是當前被調用成員函數所在的對象的起始地址。每當創建一個對象時,系統就把this指針初始化指向該對象。

(1) 當類的非靜態成員函數返回當前對象時,會使用return *this

(2) 當成員函數的函數形參名與類的數據成員名相同時,會使用this->n=n


發佈了55 篇原創文章 · 獲贊 25 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章