static修飾的函數作用與意義
static修飾的函數叫做靜态函數,靜态函數有兩種,根據其出現的地方來分類:
如果這個靜态函數出現在類裡,那麼它是一個靜态成員函數;
靜态成員函數的作用在于:調用這個函數不會通路或者修改任何對象(非static)資料成員。
其實很好了解,類的靜态成員(變量和方法)屬于類本身,在類加載的時候就會配置設定記憶體,可以通過類名直接去通路;非靜态成員(變量和方法)屬于類的對象,是以隻有在類的對象産生(建立類的執行個體)時才會配置設定記憶體,然後通過類的對象(執行個體)去通路。
如果它不是出現在類中,那麼它是一個普通的全局的靜态函數。
這樣的static函數與普通函數的差別是:用static修飾的函數,限定在本源碼檔案中,不能被本源碼檔案以外的代碼檔案調用。而普通的函數,預設是extern的,也就是說它可以被其它代碼檔案調用。
在函數的傳回類型前加上關鍵字static,函數就被定義成為靜态函數。普通 函數的定義和聲明預設情況下是extern的,但靜态函數隻是在聲明他的檔案當中可見,不能被其他檔案所用。是以定義靜态函數有以下好處:
<1> 其他檔案中可以定義相同名字的函數,不會發生沖突。
<2> 靜态函數不能被其他檔案所用。