首頁  >  文章  >  後端開發  >  如何在 C 構造函數中初始化常數指標成員?

如何在 C 構造函數中初始化常數指標成員?

DDD
DDD原創
2024-11-04 15:05:09157瀏覽

How to Initialize a Constant Pointer Member in a C   Constructor?

在C 構造函數中初始化常數指標成員

在C 中使用類別時,我們可能會遇到需要初始化常數指標成員的情況指標成員作為建構函式中的常數。這確保了指標在物件的整個生命週期中保持不可變。

考慮以下程式碼範例:

<code class="cpp">class Foo;

class Bar {
public:
    Foo * const foo;
    Bar(Foo* _foo) {
        foo = _foo;
    }
};</code>

在此程式碼中,foo 成員被標記為常數指標。但是,編譯會失敗,因為 foo 指標是在建構函式體內賦值的,而常數成員不允許這樣做。

正確方法:在初始化器列表中初始化

初始化常數指標成員的正確方法是在構造函數體內的成員初始值設定項列表中執行此操作。這可以透過以下方式實現:

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

透過在初始化列表中初始化 foo,編譯器確保在構造函數進入其主體之前為指標賦值。這樣就滿足了在物件構造時初始化常數成員的要求。

修改後的程式碼中,傳入的參數變數被重新命名為_foo,以避免與foo成員混淆。

按照這個方法,您可以在建構函式中初始化常數指標成員,確保它們的值在物件的整個生命週期中保持不可變。

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

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