1 物件與物件之間要共享資料,則需要使用靜態成員或靜態方法。
2 在類中宣告靜態成員變數,即使不例項化物件,也可以我靜態成員變數分配空間。(因為靜態成員變數在物件建立之前就已經被分配了記憶體空間)
3 靜態成員雖在類中,但它並不是隨物件的建立而分配記憶體空間的,也不是隨物件的撤銷而釋放(一般的成員在物件建立時會分配空間,在物件撤銷時會釋放)。靜態成員變數是在程式編譯時分配空間,而在程式結束時釋放空間。
4 初始化靜態成員變數要在類的外面進行。int player::playernumber = 0;初始化的格式如下:
資料型別名 類名::靜態成員變數名=初值;
5 可以通過類名對靜態成員變數進行引用,也可以通過物件名對靜態成員變數進行引用。
6 不能用引數初始化表對靜態成員變數進行初始化。
**示例:以下**是兩個小人相互攻擊的示例
#include#includeusing namespace std;
class player
//析構 總數減1
~player()
//獲取攻擊力
int getattack()
//設定攻擊力
void setattack(int attackparam)
//獲取防禦力
int getdefense()
//設定防禦力
void setdefense(int defenseparam)
//改變生命值
void changehealth(int healthparam)
else if (health <= 0)
}//顯示屬性
void displayproperty()
void attackplayer(player* otherplayer)
static int displaynumber()
};int player::playernumber = 0;
int main()
if (player02)
cout << player::playernumber << endl;
if (player01)
if (player02)
cout << player::playernumber << endl;
system("pause");
return 9696969;
}
c 靜態函式和靜態成員
靜態函式 在類內宣告static,在類外定義時不能再用static,靜態函式可以訪問類的靜態物件。靜態物件 靜態物件不屬於任何乙個物件,所以他們並不是在建立類的物件時被定義的,也就是不能被建構函式初始化。要想定義全域性變數一樣定義靜態物件。生命週期和全域性變數一樣。通常,為了防止物件多次定義,最好把...
靜態變數和靜態函式
靜態變數 靜態變數使用 static 修飾符進行宣告 在所屬類被裝載時建立 通過類進行訪問 所屬類的所有例項的同一靜態變數都是同乙個值 非靜態變數 不帶有 static 修飾符宣告的變數稱做非靜態變數 在類被例項化時建立 通過物件進行訪問 同乙個類的不同例項的同一非靜態變數可以是不同的值 在c 中,...
靜態函式和靜態變數
記憶體大致可以劃分為 棧區堆區 全域性 靜態區 常量區 區 其中棧區位於高位址,區位於低位址。區 存放程式 段 常量區 存放各種常量 數值常量和字串常量等 全域性 靜態區 存放全域性變數和靜態變數,未初始化的和初始化的分開存放 堆區 使用new就是在該區申請 棧區 存放區域性變數等 a.件 clas...