一、靜態局部變量
1.static修飾的局部變量,不像其他局部變量一樣函數退出時就消失,它的存儲於全局區,生命周期是整個文件;
2.但是靜態局部變量的作用域還是和其他局部變量一樣在函數中,只能在該函數中調用,退出函數后還存在但不能使用;
3.在聲明時如果沒有初始化,編譯器會將它自動初始化為0。
二、靜態全局變量:
1.靜態全局變量只能在本文件中訪問,其他文件不可訪問;
2.其他文件中可以定義與它同名的變量,互不影響。
三、靜態函數
1.靜態函數只能在聲明它的文件中可見,其他文件中不能使用該函數;
2.其他文件中可以定義與它同名的函數,互不影響。
四、靜態屬性
1.static修飾的屬性稱為靜態屬性,靜態屬性屬於類而非某個對象,無論實例化了多少個對象,它只有一份;
2.任何一個該類的對象都可以對它操作,一個對象改變了它的值,其他對象中的也會改變;
3.所以,就算沒有實例化對象,也可以直接操作靜態數據成員;
4.相當於加了一個類約束和訪問控制屬性限制的全局變量,表示只能在這個類里面使用(作用域),它存儲(生命周期)在全局區;
5.靜態屬性必須在類外定義和初始化;
5.和普通數據成員一樣,靜態數據成員也遵從public, protected, private訪問規則;
6.初始化格式:數據類型 類名::靜態成員名=值 (int Class::num=0);
7.訪問方式:① 類對象名.靜態成員名 (cla.num);
② 類類型名::靜態成員名 (class::num);
五、靜態成員函數
1.static修飾的函數稱為靜態函數,靜態函數也是屬於整個類,而不是某個對象;
2.靜態成員函數沒有隱藏this指針;
3.它無法訪問屬於類對象的非靜態屬性,也無法調用非靜態成員函數;
4.只能訪問靜態屬性 和 調用靜態函數;
5.態函數其實是加了類約束 及 訪問控制屬性限制的 全局函數。