對象的構造3

  • 兩個特殊的構造函數
    • 無參構造函數
      • 沒有參數的構造函數
      • 當類中沒有定義構造函數時,編譯器默認提供一個無參構造函數,並且其函數體爲空
    • 拷貝構造函數
      • 參數爲const class_name&的構造函數
      • 當類中沒有定義拷貝構造函數時,編譯器默認提供一個拷貝構造函數,簡單的進行成員變量的值複製。
  • 拷貝構造函數的意義
    • 兼容C語言的初始化方式
    • 初始化行爲能夠符合預期的邏輯
    • 淺拷貝
      • 拷貝後對象的物理狀態相同
    • 深拷貝
      • 考背後對象是我邏輯狀態相同
  • 編譯器提供的拷貝構造函數只進行淺拷貝

  • 什麼時候需要進行深拷貝

    • 對象中有成員指代了系統中的資源
      • 成員指向了動態內存空間
      • 成員打開外存中的文件
      • 成員使用了系統中的網絡端口
  • 一般原則
    • 自定義拷貝構造函數,必然需要實現深拷貝
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章