C 11 引入了類別內初始化器,它允許直接在類別定義中初始化成員變數。但是,這些初始化器必須遵守特定的語法規則。
問題:
為什麼強制類內初始化器使用等號(=) 或大寫字母大括號({})?
答案:
此要求旨在消除潛在的語法歧義。
考慮以下範例:
class BadTimes { struct Overloaded; int Overloaded; // Legal, but unusual. int confusing(Overloaded); // <-- Ambiguous line };
有問題的行可以解釋為兩種方式:
這種歧義是由於使用括號而產生的,括號既可以表示方法聲明,也可以表示物件初始化。
為了解決這個混亂,C 11 強制在類別初始化器中使用花括號。這明確表明混淆是一個成員變數:
class BadTimes { struct Overloaded; int Overloaded; // Legal, but unusual. int confusing{Overloaded}; // <-- Clear initialization };
因此,類別內初始化程序必須使用等號或大括號來防止語法誤解並確保程式碼可讀性。
以上是為什麼 C 類別內初始化器必須使用 `=` 或 `{}`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!