static成员函数和static成员
C++的靜態(tài)成員是和類關聯(lián)的,它屬于某個類,但是不屬于某個特定的對象。靜態(tài)成員變量只存儲一份供所有對象共用。所以在所有對象中都可以共享它。使用靜態(tài)成員變量實現(xiàn)多個對象之間的數(shù)據(jù)共享不會破壞隱藏的原則,保證了安全性還可以節(jié)省內存。
但是可以通過對象調用靜態(tài)成員函數(shù),雖然我們一般不會這么做:
1 class Point 2 { 3 public: 4 void init() 5 { 6 } 7 static void output() 8 { 9 } 10 }; 11 12 void main() 13 { 14 Point pt; 15 pt.init(); //OK 16 pt.output(); //OK 17 }在類外實現(xiàn)時不加static關鍵字,只有在類內聲明時才加static。
我們一般會用類名直接調用靜態(tài)成員函數(shù):
1 Point::output(); //OK 這是更常見的調用方式?
靜態(tài)成員函數(shù)中不能調用非靜態(tài)成員。因為靜態(tài)成員函數(shù)的作用就是為了處理靜態(tài)成員。而靜態(tài)成員和靜態(tài)成員函數(shù)是沒有this指針的,但是非靜態(tài)成員是有this指針的,所以static member function不能調用非靜態(tài)成員。
為什么靜態(tài)成員和靜態(tài)成員函數(shù)沒有this指針?
this指針的值是當前被調用的成員函數(shù)所在的對象的起始地址,而靜態(tài)成員只屬于類,不屬于對象,也就沒有this指針了。
?
轉載于:https://www.cnblogs.com/howo/p/8476375.html
總結
以上是生活随笔為你收集整理的static成员函数和static成员的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: fscanf的返回值未成功输入的元素个数
 - 下一篇: 复杂的动态布尔表达式性能评估(1)--A