了解預設建構子和沈澱函數的「=default」和「{}」之間的差異
而「=default 」和「{」 }"對於預設建構函式和析構函式來說可能看起來可以互換,在考慮非虛擬析構函式和
非虛擬析構函式
處理非虛擬析構函數時,「=default」語法扮演重要角色。產生析構函數,就像為普通類別產生析構函數一樣,從而使類型被視為普通類型。 >
非虛擬建構子
類似地,對於非-虛擬建構函數,使用「=default」允許編譯器產生預設建構函數,保持簡單性。 🎜>瑣碎類在C 11中,瑣碎類別是指不沒有任何使用者提供的特殊成員函數(預設建構子、複製/移動建構子/賦值、析構函式)。這樣的最佳化。特殊成員NotTrivial並不平凡,因為它有一個使用者提供的預設建構子。很平凡,即使它有一個標記為“=default”的構造函數,因為這仍然調用編譯器的預設構造函數
結論
雖然「=default」和「{}」看起來很相似,但它們在使用時會對類別的瑣碎性產生重大影響與非虛擬析構函數或建構子。 “=default”保留編譯器的預設行為並保留瑣碎性,而“{}”則創建使用者提供的函數並可能改變類別的瑣碎性狀態。以上是C 中預設建構子和析構函式的「=default」和「{}」有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!