3 回答

TA貢獻1777條經驗 獲得超10個贊
這是C ++ 11的新功能。
這意味著您要使用編譯器生成的該函數的版本,因此您無需指定主體。
您還可以= delete用于指定您不希望編譯器自動生成該函數。
隨著移動構造函數和移動賦值運算符的引入,生成自動版本的構造函數,析構函數和賦值運算符的規則變得相當復雜。使用= default和= delete使事情變得容易,因為您無需記住規則:您只需說出要發生的事情即可。

TA貢獻2051條經驗 獲得超10個贊
這是C ++ 0x的一項新功能,可告訴編譯器創建相應構造函數或賦值運算符的默認版本,即僅對每個成員執行復制或移動動作的版本。這很有用,因為默認情況下并非總是生成move構造函數(例如,如果您有自定義析構函數),這與copy構造函數(以及類似的賦值方法)不同,但是如果沒有什么不平凡的編寫,最好讓編譯器會處理它,而不是每次都自己拼出來。
還要注意,如果提供任何其他非默認構造函數,則不會生成默認構造函數。如果仍然需要默認的構造函數,則可以使用此語法來使編譯器合而為一。
作為另一個用例,在某些情況下不會隱式生成副本構造函數(例如,如果您提供自定義的移動構造函數)。如果仍然需要默認版本,則可以使用此語法進行請求。
有關詳細信息,請參見標準的12.8節。

TA貢獻1788條經驗 獲得超4個贊
它是C ++ 11中的新功能,請參見此處。如果您定義了一個構造函數,但想對其他構造函數使用默認值,則它會非常有用。在C ++ 11之前的版本中,您必須定義所有構造函數,即使它們等同于默認構造函數。
還要注意,在某些情況下,不可能提供用戶定義的默認構造函數,該構造函數在默認和值初始化下的行為與編譯器綜合的行為相同。default使您能夠恢復該行為。
- 3 回答
- 0 關注
- 612 瀏覽
添加回答
舉報