[心得] staic用法
資柿園掛了,好多筆記心得都沒地方放
只好借放這邊了,阿東你應該沒意見吧
-----------------------------------
static 有三種類型的用法
一種是用在函數裡面的靜態變數
一種是用在不同檔案之間靜態變數
一種是用在class或struct中的靜態成員
以下,一一講解每種不同的使用方法:
使用在函數中
void Func()
{
static int count = 0;
cout <<count++ <<endl;
return;
}
這是最常見的用法
一般區域變數,會在函數結束之後,便隨著消失
也就是說,每次呼叫Func這個函數(在沒有static的情況下)
每次秀出畫面的值都會是0
加上了static,表示他是靜態變數,會在程式一開始就獨立分配一塊記憶體
並不會被歸類於函數裡面的區域變數,因此不會隨著函數結束而消失
使用在不同檔案
當寫到稍微大一點的程式,就是專案
就會寫到很多個檔案,彼此之間有互相利用的關係存在
但是,有些變數並不想被外界使用的話,就必須使用到static
static在這邊的意義,代表不被外界檔案所引用
一般情況下,我們要引用其他檔案的變數,必須使用extern
但是一旦加了static之後,extern也會變得無法使用
因此達到了不給外界使用的效果
class或struct之靜態成員
靜態成員的意義,很類似於第一種用法,不過仍然具有差異
相同的地方,在於他們都是額外的分配一塊記憶體區間
class或struct宣告出一個物件時,會分配一塊記憶體出來
而這塊記憶體包涵了物件中所有被宣告的變數
但是有個變數被宣告成static的話,就代表那個變數並不會隨著物件一起產生
而是獨立出來
也就是說,所有物件都不會包涵那個static宣告的變數
而是由class或struct有擁有,變成所有物件去共用一個變數而已
並非每一個物件獨立擁有該變數記憶體區間
以上,下次有機會再見。
(資柿園的怨念.....)
--
ˍˍ
極目冷眼笑蒼雲 ▕寂寞▏
寂寞一生傲天穹 ▕侯印▏
 ̄ ̄
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.118.4.13
推
10/17 02:03, , 1F
10/17 02:03, 1F
→
10/17 02:05, , 2F
10/17 02:05, 2F
→
10/17 21:56, , 3F
10/17 21:56, 3F
→
10/18 01:13, , 4F
10/18 01:13, 4F