1,靜態成員變數是類所有,不依賴物件而存在,屬於全域性資料區。資料段
2,不能在類裡面分配空間,只能在類外初始化,預設為0
3,可以通過類名直接訪問public靜態成員變數,也可以通過物件名,靜態成員變數,也受訪問許可權限制
4,靜態成員函式在不構造物件的情況下,可以直接訪問靜態成員,通過類名,但是普通成員函式就不行
5,用sizeof求物件的大小時,static成員變數不佔空間,因為它屬於類。求類大小也一樣。
6,c++類物件中的成員變數和成員函式是分開儲存的
成員變數
成員函式
7,靜態成員函式和非靜態成員函式的
靜態成員函式不包括指向當前物件的this指標
非靜態成員函式包括指向當前物件的this指標
this指標的值是當前物件的起始位址。
test(int i)其實等價於test(test* this,int i);
8,靜態成員函式不能被const修飾。在用類名直接呼叫靜態成員函式前提下,靜態成員函式中只能呼叫靜態成員變數。
二,應用
1,用來統計物件數目
#include class test
test()
~test()
};int test::ccount;
void run()
int main()
2,單列模式
概念:乙個類最多只能建立乙個物件。
步驟:把建構函式的訪問級別設為private,使其在類外不能構造物件。
定義乙個私有靜態物件指標變數和乙個公有靜態成員函式
在靜態成員函式中,判斷那個靜態物件指標是否為空,為空就new出乙個物件,並返回。如果不為空,直接返回上次的物件指標。
3,**
#include #include using namespace std;
class singleton
public:
static singleton* getinstance()
int main(int argc, char *argv)
C 類靜態成員與類靜態成員函式
當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...
C 類靜態成員與類靜態成員函式
當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...
C 類靜態成員與類靜態成員函式
當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...