在C 中,嘗試定義一個具有初始值的公共靜態變量,例如static int j=0 ;,觸發編譯錯誤。這歸因於 ISO C 中的基本規則,該規則禁止非常量靜態成員變數的類別內初始化。
與 C 不同,當此類變數是隱式初始化的為零時,C 要求它們保持未初始化狀態。這種差異源於引用透明度原則,該原則確保靜態成員的值在類別的所有實例中保持一致。允許類別內初始化可能會損害此原則,導致變數值不一致。
與非常量成員相比,允許初始化常數靜態成員類別內,因為它們的值在初始化後無法修改。這意味著這些成員在其整個生命週期中保持一致的值。
禁止類別內初始化意味著C 中的靜態變數不會自動初始化為0,如相反,它們保持未初始化狀態,直到程式中的其他地方顯式賦值為止。
要正確初始化C 中的靜態變量,需要在頭檔中定義它們並在單獨的.cpp 檔案中分配初始值,如下面的程式碼片段所示:
透過遵循此方法,您可以確保靜態變數在所有類別實例中正確且一致地初始化。
以上是為什麼無法在 C 類別中初始化非常量靜態成員變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!