首頁 > 後端開發 > C++ > C 中預設建構子和析構函式的「=default」和「{}」有什麼不同?

C 中預設建構子和析構函式的「=default」和「{}」有什麼不同?

Linda Hamilton
發布: 2024-12-07 04:47:10
原創
483 人瀏覽過

What's the Difference Between

了解預設建構子和沈澱函數的「=default」和「{}」之間的差異

而「=default 」和「{」 }"對於預設建構函式和析構函式來說可能看起來可以互換,在考慮非虛擬析構函式和

非虛擬析構函式

處理非虛擬析構函數時,「=default」語法扮演重要角色。產生析構函數,就像為普通類別產生析構函數一樣,從而使類型被視為普通類型。 >

非虛擬建構子

類似地,對於非-虛擬建構函數,使用「=default」允許編譯器產生預設建構函數,保持簡單性。 🎜>瑣碎類

在C 11中,瑣碎類別是指不沒有任何使用者提供的特殊成員函數(預設建構子、複製/移動建構子/賦值、析構函式)。這樣的最佳化。特殊成員NotTrivial並不平凡,因為它有一個使用者提供的預設建構子。很平凡,即使它有一個標記為“=default”的構造函數,因為這仍然調用編譯器的預設構造函數

結論

雖然「=default」和「{}」看起來很相似,但它們在使用時會對類別的瑣碎性產生重大影響與非虛擬析構函數或建構子。 “=default”保留編譯器的預設行為並保留瑣碎性,而“{}”則創建使用者提供的函數並可能改變類別的瑣碎性狀態。

以上是C 中預設建構子和析構函式的「=default」和「{}」有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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