C 11 具有非靜態成員初始化器的類別的聚合初始化
類別內成員初始化器的使用可以顯著影響類別的行為C.具體來說,它提出了在這些情況下類別是否仍然是聚合的問題。
在 C 11 中,類別內成員初始值設定項引入了一個重要的限制:它們禁止將類別或結構分類為聚合。這在C 11 標準草案中很明顯,該標準將聚合定義為「沒有使用者提供的建構函數的類,沒有非靜態資料成員的大括號或等號初始化程序,沒有私有或受保護的非靜態資料成員,沒有基類,並且沒有虛擬函數。
但是,此限制在 C 14 中被取消。成員初始化器不再阻止類別被視為匯總,因為該標準已被修訂以消除此限制。此變更在 N3605 中進行了詳細介紹,它建議取消對具有成員初始值設定項目的聚合的限制。
此變更的基本原理源自於認識到成員初始值設定項不等於使用者定義的建構子。雖然它們有一些相似之處,但成員初始化器與聚合初始化的概念更加一致,聚合初始化旨在成為初始化物件的輕量級且高效的方法。
總之,在 C 11 中,類內成員初始化器取消了類別的聚合狀態資格,但此限制在 C 14 中被刪除,從而允許類別初始化具有更大的靈活性。
以上是具有類別內成員初始值設定項目的類別在 C 中仍然是聚合嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!