1、static成員函數沒有this形參,它可以直接存取所屬類的static成員,但不能直接使用非static成員。
2、可以通過範圍操作符,對象,引用,指標來調用static成員。
3、在類外給static成員資料賦值,或定義成員函數時不必要再指定static。
4、因為 static 成員不是任何對象的組成部分,所以 static 成員函數不能被聲明為 const。畢竟,將成員函式宣告為 const 就是承諾不會修改該函數所屬的對象;也不能聲明為虛函數。
保證對象正好定義一次的最好辦法,就是將 static 資料成員的定義放在包含類非內聯成員函數定義的檔案中。
5、整型const static資料成員就可以在類的定義體中進行初始化。const static資料成員在類的定義體中初始化時,該資料成員仍必須在類的定義體之外進行定義。
6、static成員不是類對象的組合部分,屬於類;但是由給定類的全體對象所共用。static 資料成員的類型可以是該成員所屬的類類型。非 static 成員被限定聲明為其自身類對象的指標或引用。
7、每個標號為在該標號到下一個標號之間聲明的成員設定訪問保護。標號可以在類中出現多次。
8、const member function(常量成員函數),一種成員函數,不能改變對象的普通(即,既不是 static 也不是mutable)資料成員。const 成員中的 this 指標指向 const 對象。成員函數是否可以被重載取決於該函數是否為 const。
#include <iostream>using namespace std;class TestStatic{public:TestStatic(){cout << "In TestStatic" << endl;}static void output(){cout << "For a Test" << endl;cout << period << endl;}void output1() const{cout << "In output1" << endl;}void output1(){cout << "In output1" << endl;}static int testme;static const int period = 30;static TestStatic mem1;//TestStatic mem2; //errorTestStatic* mem3;};//const int TestStatic::period;int TestStatic::testme = 10;class TestStatic1: public TestStatic{public:TestStatic1(){cout << "In TestStatic1" << endl;}};int main(){TestStatic t1;cout << TestStatic::testme << endl;cout << t1.testme << endl;t1.output();TestStatic1 t2;cout << t2.testme << endl;t2.output();return 1;}
9、通過公有的靜態成員函數訪問私人待用資料成員。
參考
[1] http://blog.163.com/zhoumhan_0351/blog/static/39954227201002621251123/
[2] http://blog.163.com/zhoumhan_0351/blog/static/3995422720103179552945/