首頁 > 後端開發 > C++ > 為什麼 C 類別內初始化器必須使用 `=` 或 `{}`?

為什麼 C 類別內初始化器必須使用 `=` 或 `{}`?

Mary-Kate Olsen
發布: 2024-12-19 02:36:43
原創
691 人瀏覽過

Why Must C   In-Class Initializers Use `=` or `{}`?

為什麼類別內初始化器需要等於或大括號

C 11 引入了類別內初始化器,它允許直接在類別定義中初始化成員變數。但是,這些初始化器必須遵守特定的語法規則。

問題:

為什麼強制類內初始化器使用等號(=) 或大寫字母大括號({})?

答案:

此要求旨在消除潛在的語法歧義。

考慮以下範例:

class BadTimes {
    struct Overloaded;
    int Overloaded; // Legal, but unusual.

    int confusing(Overloaded); // <-- Ambiguous line
};
登入後複製

有問題的行可以解釋為兩種方式:

  1. 作為帶有單一Overloaded 參數的函數聲明,傳回一個整數。
  2. 作為名為混淆的整數成員的宣告和初始化,其中初始值為 Overloaded資料成員。

這種歧義是由於使用括號而產生的,括號既可以表示方法聲明,也可以表示物件初始化。

為了解決這個混亂,C 11 強制在類別初始化器中使用花括號。這明確表明混淆是一個成員變數:

class BadTimes {
    struct Overloaded;
    int Overloaded; // Legal, but unusual.

    int confusing{Overloaded}; // <-- Clear initialization
};
登入後複製

因此,類別內初始化程序必須使用等號或大括號來防止語法誤解並確保程式碼可讀性。

以上是為什麼 C 類別內初始化器必須使用 `=` 或 `{}`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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