在C++中,關鍵字static有以下幾種作用:
修飾變量:當static修飾一個局部變量時,該變量在程序的生命周期內只被初始化一次,并且在函數調用結束后仍然保持其值,直到下一次函數調用時才會重新初始化。當static修飾一個全局變量時,該變量的作用域僅限于當前文件,其他文件無法訪問。
修飾函數:當static修飾一個函數時,該函數只能在定義它的源文件中可見,其他文件無法使用該函數。這種函數稱為靜態函數或內部函數。
定義靜態類成員:在類中使用static關鍵字定義的成員是類的靜態成員,不依賴于類的實例而存在,并且所有類的實例共享同一個靜態成員。靜態成員可以被類的所有實例訪問,也可以通過類名直接訪問。
定義靜態局部變量:在函數內部定義的靜態局部變量與常規局部變量不同,它在程序的生命周期內只被初始化一次,并且在函數調用結束后仍然保持其值,直到下一次函數調用時才會重新初始化。靜態局部變量的作用域僅限于定義它的函數內部。
總的來說,static關鍵字的作用是限定變量和函數的作用域,并且在一定程度上提供了對共享數據的支持。