首頁 >後端開發 >C++ >為什麼無法在 C 類別中初始化非常量靜態成員變數?

為什麼無法在 C 類別中初始化非常量靜態成員變數?

Barbara Streisand
Barbara Streisand原創
2024-12-17 10:56:24660瀏覽

Why Can't I Initialize Non-Constant Static Member Variables Within a C   Class?

理解非常量靜態成員的類別內初始化的禁止

在C 中,嘗試定義一個具有初始值的公共靜態變量,例如static int j=0 ;,觸發編譯錯誤。這歸因於 ISO C 中的基本規則,該規則禁止非常量靜態成員變數的類別內初始化。

禁止的理由

與 C 不同,當此類變數是隱式初始化的為零時,C 要求它們保持未初始化狀態。這種差異源於引用透明度原則,該原則確保靜態成員的值在類別的所有實例中保持一致。允許類別內初始化可能會損害此原則,導致變數值不一致。

常數靜態成員的初始化

與非常量成員相比,允許初始化常數靜態成員類別內,因為它們的值在初始化後無法修改。這意味著這些成員在其整個生命週期中保持一致的值。

靜態變數初始化的含義

禁止類別內初始化意味著C 中的靜態變數不會自動初始化為0,如相反,它們保持未初始化狀態,直到程式中的其他地方顯式賦值為止。

C 中的正確初始化

要正確初始化C 中的靜態變量,需要在頭檔中定義它們並在單獨的.cpp 檔案中分配初始值,如下面的程式碼片段所示:

透過遵循此方法,您可以確保靜態變數在所有類別實例中正確且一致地初始化。

以上是為什麼無法在 C 類別中初始化非常量靜態成員變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn