首頁 >後端開發 >C++ >如何正確初始化C類別中的靜態字串變數?

如何正確初始化C類別中的靜態字串變數?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-05 01:51:08565瀏覽

How Can I Correctly Initialize Static String Variables in a C   Class?

在C 類別中初始化靜態字串變數:執行時錯誤難題

在C 類別中將函數宣告為靜態時,這是至關重要的考慮變數存取的影響,因為編譯器要求靜態函數使用的任何變數也必須是靜態的。然而,這對初始化為 const 字串的非整數變數提出了挑戰,因為在類別定義中初始化它們會導致編譯錯誤。

具體來說,將字串值指派給類別定義中的靜態 const變數會觸發執行階段錯誤,​​如以下類別所示:

class MyClass {
public:
    static const string message = "Hello World!";
};

此程式碼將無法編譯,並顯示錯誤訊息:「只有靜態常數積分變數可以在類別內初始化。」

為了避免此問題,可以在類別內定義靜態字串變量,但在類別外部的來源檔案內進行初始化。這種方法將宣告和初始化階段分開,允許在類別定義之後初始化變數。

// Within the class:
class MyClass {
public:
    static const string message;
};

// Within a source file:
const string MyClass::message = "Hello World!";

或者,正如原始問題所暗示的那樣,理解 static 和 const 之間的區別至關重要。將函數設為靜態意味著它不與物件關聯,並且無法存取非靜態成員。使資料靜態意味著它在類別的所有物件之間共用。這可能與預期的功能不符。

相反,將變數宣告為 const 僅限制其可修改性,同時仍允許存取非靜態成員。這種區別對於維持所需的物件導向行為至關重要。

以上是如何正確初始化C類別中的靜態字串變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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