c++類對象的生存週期 一

構造函數:用來初始化對象的,自動調用的成員方法

  1. 構造函數是可以重載的
  2. 如果在設計類的時候沒有自己實現構造函數,則編譯器會生成一個默認的構造函數,反之編譯器則不會生成默認的構造函數

拷貝構造函數:

  1. 同構造函數的兩點 
  2. 編譯器默認生成的拷貝構造函數會發生淺拷貝
  3. 拷貝構造函數的形參必須是引用,防止發生遞歸調用拷貝構造函數

賦值運算符重在函數:

  1. 編譯器默認生成的是一個會發生淺拷貝的賦值運算符重載函數
  2. 防止自賦值、淺拷貝、內存泄漏

臨時對象:

  1. 臨時對象的生存週期在本句表達式    eg:用臨時對象構造同類型的已存在的對象,調用構造函數生成顯示生成臨時對象,然後調用賦值運算符重載函數給存在的對象賦值,賦值重載函數調用完成後臨時對象調用析構函數(出了語句臨時對象要析構)
  2. 如果臨時對象被引用,則臨時對象的生命週期就和引用相同
  3. 用臨時對象構造同類型的新對象的時候,此時臨時對象不生成,用構造臨時對象的方法直接構造目標對象
  4. 內置類型產生的臨時量是常量,自定義生成的產生的臨時量是變量可以被修改 但隱式生成的臨時對象是常對象

析構函數:

  1. 沒有參數
  2. 不可以重載
  3. 要釋放外部引用的資源
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章