首頁 > 後端開發 > C++ > 為什麼 C 11 中的類別內初始化器僅限於 `=` 和 `{}`?

為什麼 C 11 中的類別內初始化器僅限於 `=` 和 `{}`?

Susan Sarandon
發布: 2024-12-19 01:50:09
原創
655 人瀏覽過

Why are In-Class Initializers in C  11 Restricted to `=` and `{}`?

類別內初始化器的語法限制

在C 11 中,類別內初始化器只能使用等號(=) 或大花號大括號{} 為成員賦值。為什麼會出現這種情況?

歧義緩解

大括號語法強制明確的程式碼解釋。考慮這個例子:

class Example {
    struct Inner;
    int member;

    int conflicting(Inner); // Function declaration or member initialization?
};
登入後複製

如果沒有大括號限制,程式碼片段可能會不明確。第一行可以解釋為函數宣告或使用括號的成員初始化。

class Example {
    struct Inner;
    int member;

    int conflicting{Inner}; // Clearly a member initialization
};
登入後複製

大括號闡明衝突是初始化為 Inner 值的成員。

額外的清晰度

使用大括號還可以透過分隔成員聲明來提供額外的清晰度和初始化。這可以增強可讀性並減少誤解的可能性。

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

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