首頁 >後端開發 >C++ >如何在 C 建構函式中初始化 Const 成員變數?

如何在 C 建構函式中初始化 Const 成員變數?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-03 02:54:03336瀏覽

How to Initialize a Const Member Variable in a C   Constructor?

如何在建構函式中初始化不可變欄位:深入探索

在C 語言中,可能會遇到這樣的場景:您打算創建一個在其建構函數中需要不可變字段的類別。在這種情況下,確保欄位的不變性至關重要。本文將深入探討實現此目標的正確方法。

考慮這樣一個場景:類別 Foo 作為資料結構,而類別 Bar 是 Foo 的包裝器,在構造過程中需要 Foo 指標作為參數。我們的目標是確保該指標在 Bar 實例的整個生命週期中保持不變。

嘗試在 Bar 的建構子中初始化 const 指標 foo 可能類似於以下:

<code class="cpp">class Foo;

class Bar {
public:
    Foo * const foo;
    Bar(Foo* foo) {
        this->foo = foo; // Compiler error
    }
};

class Foo {
public:
  int a;
};</code>

但是,這種方法會觸發編譯錯誤。為了修正它並在Bar 實例中建立foo 的不變性,我們需要使用初始化列表:

<code class="cpp">Bar(Foo* _foo) : foo(_foo) {}</code>

在此修訂版本中,構造函數將Foo 指標作為參數,將其指派給成員變量foo 使用初始值設定項列表,並重新命名傳入變數以避免與成員變數發生潛在混淆。

此技術可確保 foo 指標在 Bar 構造時立即初始化,使其對於 Bar 的其餘部分不可變實例的生命週期。

以上是如何在 C 建構函式中初始化 Const 成員變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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