具有非靜態成員初始化器的類別的聚合初始化
在C 中,聚合初始化是初始化類別或類別的成員的便捷文法. struct 而不明確地呼叫建構函式。然而,類別內成員初始值設定項的使用引發了類別/結構是否仍然是聚合的問題。
C 11 和聚合狀態
根據 C 11 標準中,具有類內成員初始值設定項可防止類別/結構被視為聚合。這是因為成員初始值設定項類似於使用者定義的建構函數,而在聚合中不允許使用這些建構函數。
struct A { int a = 3; int b = 3; }; A a{0, 1}; // Invalid for C++11
C 14 和聚合初始化
但是,在C 14中,這個限制被取消了。現在允許具有非靜態成員初始值設定項的類別/結構進行聚合初始化。進行此更改是為了解決開發人員回饋並簡化對聚合初始化的理解。
struct A { int a = 3; int b = 3; }; A a{0, 1}; // Valid for C++14
G 對C 14 聚合的支援
請注意,G 版本5.0 及更高版本支援具有非靜態初始值設定項的類別成員/結構的C 14 聚合初始化。然而,舊版的 G 可能無法辨識此語法。
以上是具有非靜態成員初始化器的類別可以在 C 中聚合初始化嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!