在C 類別中初始化靜態字串
在類別中宣告成員函數和變數時,作用域和可訪問性成為重要的考慮因素。如果您遇到某些成員函數不直接存取類別物件並且您決定將它們設為靜態的情況,您可能還需要修改它們存取的變數的聲明。
問題:初始化靜態字串變數
如果你有像下面這樣的字串變數class:
string RE_ANY = "([^\n]*)"; string RE_ANY_RELUCTANT = "([^\n]*?)";
將它們設為靜態const 變數可確保它們保持不變,但可能會導致初始化問題。編譯器可能會抱怨靜態常數整數變數只能在類別內初始化。
解決方案:外部初始化
作為解決方法,您可以初始化這些靜態字串變數在來源檔案中的類別之外。例如:
// Within the class class Thing { static string RE_ANY; static string RE_ANY_RELUCTANT; }; // In a source file string Thing::RE_ANY = "([^\n]*)"; string Thing::RE_ANY_RELUCTANT = "([^\n]*?)";
注意:區分靜態函數和常數函數
值得注意的是,不應將存取這些字串的成員函數設為靜態,因為它們仍然需要存取類別成員。相反,請考慮將它們設為 const 函數,這樣可以防止它們修改類別成員。這維護了函數和類別物件之間所需的關聯,同時確保不變性。
以上是如何正確初始化 C 類別中的靜態字串變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!