在C++中,static關鍵字有以下幾種作用:
靜態變量:聲明靜態變量時,變量在程序的整個生命周期內都存在,只會被初始化一次,并且在函數調用時保持其值不變。靜態變量在函數外部定義,可以在同一個文件中的其他函數中訪問。
靜態函數:靜態函數只能在當前文件中訪問,不可被其他文件調用。靜態函數的作用主要是隱藏函數的實現細節,只將接口暴露給其他文件。
靜態類成員:靜態類成員是類的所有對象所共享的成員,不會被類的任何對象所擁有。靜態成員在類外部被定義和初始化,可以通過類名和作用域解析運算符::來訪問。
靜態類:靜態類只包含靜態成員,不能實例化為對象,只能通過類名和作用域解析運算符來訪問。
靜態局部變量:在函數內部聲明的靜態局部變量只會被初始化一次,并且在函數調用時保持其值不變。靜態局部變量的作用是在函數調用之間保持狀態信息。
需要注意的是,靜態成員或變量在編譯期間就已經確定了它們的存儲空間,它們的生命周期和作用域與普通變量有所不同。