首頁 > 後端開發 > C++ > 為什麼我不能直接在 C 中初始化建構函式中的 `const` 欄位?

為什麼我不能直接在 C 中初始化建構函式中的 `const` 欄位?

Susan Sarandon
發布: 2024-11-03 12:50:31
原創
212 人瀏覽過

Why Can't I Initialize a `const` Field in a Constructor Directly in C  ?

在建構函式中初始化Const 欄位

當定義一個帶有const 欄位且在物件的整個生命週期中必須保持不可變的類別時,初始化至關重要正確地。考慮以下場景:

問題陳述:

您想要建立一個C 類Bar,它接受Foo 指針作為輸入,並在其內部維護對它的不可變引用。壽命。以下程式碼無法編譯:

<code class="cpp">class Foo;

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

class Foo {
public:
  int a;
};</code>
登入後複製

解決方案:

要正確初始化構造函數中的const 字段,需要使用初始化列表:

<code class="cpp">Bar(Foo* _foo) : foo(_foo) {
}</code>
登入後複製

請注意,我們將傳入參數重新命名為_foo 以避免名稱衝突。

這種方法確保 foo 指標在 Bar 物件構造完成後立即被初始化,並且它對於其生命週期的持續時間。

以上是為什麼我不能直接在 C 中初始化建構函式中的 `const` 欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板