理解預設建構函式和析構函式中「=default」和「{}」的差別
是否「=default」的問題預設建構函式和析構函式的行為與空定義(“{}”)不同,具有細微的意義。雖然它們對於虛擬析構函數看起來相似,但在考慮建構函數和非虛擬析構函數時,它們的重要性有所不同。
預設建構子
與析構函數不同,「=」之間的區別預設建構子的default" 和"{}" 具有重大影響。
使用「{}」建立一個使用者提供的建構函數,改變類別的語意。 11 標準使類別變得不平凡。另一方面,將預設建構函數的建立委託給編譯器,確保類別保持微不足道。 >析構函數
對於虛擬析構函數,「=default」和「 {}"具有類似的效果,因為兩者都可以進行虛擬破壞。 {}”)會產生使用者提供的析構函數,可能會改變析構語意。因此,該類別不再被認為是微不足道的。
相較之下,非虛擬析構函數的=default指示編譯器自動建立預設析構函數。 t”和“{}”之間的選擇建構函數和析構函數取決於所需的行為和編碼約束。對於虛擬析構函數,這兩個選項在功能上是等效的。對於非虛擬析構函數,“=d efault」保留了類別的瑣碎性質,而「{}」引入了使用者定義的析構邏輯。
在預設建構函式的上下文中,「=default」確保了瑣碎性和編譯器-生成的初始化,而「{}」則啟用自訂記憶體管理且非常重要。以上是C 中的預設建構函式和析構函式何時應該使用「=default」與「{}」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!