構造函數:用來初始化對象的,自動調用的成員方法
- 構造函數是可以重載的
- 如果在設計類的時候沒有自己實現構造函數,則編譯器會生成一個默認的構造函數,反之編譯器則不會生成默認的構造函數
拷貝構造函數:
- 同構造函數的兩點
- 編譯器默認生成的拷貝構造函數會發生淺拷貝
- 拷貝構造函數的形參必須是引用,防止發生遞歸調用拷貝構造函數
賦值運算符重在函數:
- 編譯器默認生成的是一個會發生淺拷貝的賦值運算符重載函數
- 防止自賦值、淺拷貝、內存泄漏
臨時對象:
- 臨時對象的生存週期在本句表達式 eg:用臨時對象構造同類型的已存在的對象,調用構造函數生成顯示生成臨時對象,然後調用賦值運算符重載函數給存在的對象賦值,賦值重載函數調用完成後臨時對象調用析構函數(出了語句臨時對象要析構)
- 如果臨時對象被引用,則臨時對象的生命週期就和引用相同
- 用臨時對象構造同類型的新對象的時候,此時臨時對象不生成,用構造臨時對象的方法直接構造目標對象
- 內置類型產生的臨時量是常量,自定義生成的產生的臨時量是變量可以被修改 但隱式生成的臨時對象是常對象
析構函數:
- 沒有參數
- 不可以重載
- 要釋放外部引用的資源