C,與C++的static的幾大用法以及區別。

 static在C,C++中都是關鍵字。但是兩者的用法卻有些不同;
總結起來可以分爲:

一,面向過程static的用法:

1,靜態全局變量。/靜態函數;

1)C語言中的全局變量的作用域是整個程序;只要你在其他的文件中(如果要使用一個全局變量),用extern聲明下就可以使用在其他文件中已經定義的全局變量!

這樣導致的一個後果就是使得程序比較難以維護,而且命名的錯誤也顯得更爲隱蔽!
爲了限制其在其他文件中的作用域。

往往就會使用靜態全局變量。就是在全局變量前面加上static關鍵字。此時變量的數據分配的區域仍然是在全局區域內,但是他的作用域卻只有在當前文件中,無論在其他文件是否聲明瞭外部的變量!

2)靜態函數;

跟靜態全局變量類似,原先的全局函數具有的程序域可訪問的性質也沒有了!只能文件域內訪問!
2,靜態局部變量;

對於C或者是C++當中函數內部的變量,默認情況下都是分配在堆棧上面的臨時局部變量。在函數調用結束以後變量就會被銷燬掉。

爲了能夠在其他函數中共享,可以使用靜態局部變量。

在變量前加上static。此時變量的作用域仍然是函數內部但是他的生命週期是全局的!


二,面向對象的static成員;

C++對static關鍵字做了重用,在類中賦予了新的含義。聲明爲static的成員其隸屬於類。因爲他是隨着類的初始化加載的,而且只會加載一次!  

靜態成員函數不管是否是static, 在內存中只有一個副本, 普通成員函數調用時, 需要傳入this指針, static成員函數調用時, 沒有this指針;

因此在定義的時候應該要注意。在實現靜態static函數的時候在CPP中就不用聲明瞭跟virtual的類似!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章