透過建構函式初始化維護不可變的類別屬性
在C 中,建構函式在建立物件的初始狀態方面起至關重要的作用。有時,我們會遇到某些類別屬性需要在實例的整個生命週期中保持不變的情況。常見的場景是在物件建立期間分配常數指標。
考慮以下程式碼片段:
<code class="C++">class Foo; class Bar { public: Foo * const foo; Bar(Foo* foo) { this->foo = foo; } }; class Foo { public: int a; };</code>
這裡的目的是建立一個具有不可修改指標的 Bar 物件到 Foo 實例。然而,在編譯時,我們遇到了一個錯誤。這是因為「this」指標在類別的建構子中無法直接存取。
要解決這個問題,我們必須使用以下語法初始化建構函數的初始值設定項清單中的常數欄位:
<code class="C++">Bar(Foo* _foo) : foo(_foo) { }</code>
在此更新的程式碼中,我們重新命名傳入參數以避免與實例成員混淆。在初始化清單中,我們明確地將 _foo 參數的值指派給 foo 常數成員。
透過使用此技術,我們可以在物件建構期間有效地將 foo 指標設為 const 值,從而確保其在整個過程中的不變性。 Bar 實例的生命週期。
以上是如何在 C 構造函數中初始化 const 成員變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!