自動生成默認/復制/移動ctor和復制/移動賦值操作符的條件?我希望在編譯器通常自動生成默認構造函數、復制構造函數和賦值操作符的條件下刷新內存。我記得有一些規則,但我不記得,也找不到有信譽的資源在網上。有人能幫忙嗎?
3 回答

神不在的星期二
TA貢獻1963條經驗 獲得超6個贊
如果沒有用戶聲明的構造函數,則自動生成默認構造函數(§12.1/5)。 如果沒有用戶聲明的移動構造函數或移動賦值操作符,則自動生成復制構造函數(因為C+03中沒有移動構造函數或移動賦值運算符,這將簡化為C+03中的“始終”)(§12.8/8)。 如果沒有用戶聲明的移動構造函數或移動賦值操作符,則自動生成復制賦值操作符(§12.8/19)。 如果沒有用戶聲明的析構函數,則自動生成析構函數(§12.4/4)。
C+11及以后僅:
如果沒有用戶聲明的復制構造函數、復制賦值操作符或析構函數,以及生成的移動構造函數有效,則自動生成移動構造函數(§12.8/10)。 如果沒有用戶聲明的復制構造函數、復制賦值操作符或析構函數,并且生成的移動賦值運算符是有效的(例如,如果它不需要分配常量成員),則自動生成移動賦值操作符(§12.8/21)。
- 3 回答
- 0 關注
- 701 瀏覽
添加回答
舉報
0/150
提交
取消