C與C++中的static關鍵字

最近整理了下C和C++中的static關鍵字的用法,和大家分享一下:

在C語言中:

static可以修飾變量(全局變量,局部變量)和方法。

1.static修飾全局變量:

static修飾全局變量的時候,這個全局變量只能在本文件中訪問,不能在其它文件中訪問,即便是extern外部聲明也不可以。

注意:在同一文件中,static 定義的初始化的全局變量無法重複定義,不遵循強符號弱符號的關係。

static修飾全局變量只是改變變量的訪問權限,一般只在本文件中使用的全局變量,都要使用staic修飾,防止與其他文件命名衝突。

2.static修飾局部變量

1.) static修飾局部變量,該局部變量不會被自動釋放,直到程序運行結束才釋放

2.)static修飾的局部變量作用域不會改變,不在局部變量作用域中依然無法調用

3.)static修飾的局部變量初始化默認只會執行一次,未初始化的static局部變量默認值爲0

static修飾局部變量的使用場景一般爲:在函數中分配棧空間,並返回給調用者繼續使用而不被自動釋放。

3.static修飾方法(函數)

static修飾一個函數,則這個函數的只能在本文件中調用,不能被其他文件調用。

static修飾函數的應用和修飾全局變量的作用相似,主要限制該函數只在該文件中使用,防止和其他文件的函數命名衝突。一般只在本文件內部使用的函數,建議都使用static修飾。


在C++中:

C++中除了包含C語言中的用法,還有以下用法:

static修飾類成員變量,static修飾類成員函數。

static修飾類成員變量:

1.)    static成員變量可以實現多個對象之間的數據共享。

2.)    static成員變量類外存儲,求類的大小時並不包含在內。

3.)    static成員變量是屬於類的全局變量,存儲在內存的全局數據區。

 4.)    static成員使用時必須初始化,且只能在類外進行初始化 。

5.)    可以通過類名訪問static成員變量,也可以通過對象訪問。

6.)    派生類和父類中的static變量共用空間.。

static修飾類成員函數:

1.)    靜態成員函數屬於類的靜態成員,可以通過類名直接調用

2.)    靜態成員函數只能訪問靜態數據成員,但是非靜態成員函數可以訪問靜態數據成員。

3.)    靜態成員函數可以繼承和覆蓋,但無法虛函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章