C++構造函數種類,對象的生命歷程

  • 構造函數之默認構造函數(調用的構造函數不用傳遞參數)
Student stul(); Student *p = NULL; p = new Student();
Student Student(string name =
兩種實例化方式都是默認構造函數
  • 構造函數之初始化列表
紅字部分即爲初始化列表:一個引號,多個參數用逗號隔開,賦值用()

初始化列表特性:
  1. 其先於構造函數執行
  2. 其只能用於構造函數
  3. 其可以同時初始化多個數據成員
  • 【注意】初始化列表的功用:對於類中的靜態常量,不能用構造函數來初始化,必須使用初始化列表的方式
  • 拷貝構造函數
計算機生成了可選文字: class Student public: Student(){m_strName = jim ; } Student(const Student& Stu){ } private: Stri n g m_strName;
     拷貝構造函數的特點:
    1. 當用戶沒有定義構造函數時,編譯器會自動生成一個默認的拷貝構造函數(構造函數也是如此)
    2. 當採用直接初始化或複製初始化實例化對象時,系統會自動調用拷貝構造函數
    3. 由於拷貝構造函數的特性,拷貝構造函數不能重載!!

  • 【總結】構造函數總結:
    無 參 構 造 函 數 一 默 認 構 造 函 數 構 造 函 數 參 數 帶 默 認 值 有 參 構 造 函 數 參 數 無 默 認 值
  • 【總結】所有參數帶有默認值時,轉變成了默認構造函數普 通 構 造 函 數 系 統 自 動 生 成 的 函 數 拷 貝 構 造 函 數 普 通 構 造 函 數 初 始 化 列 表 拷 貝 構 造 函 數
【注意】初始化列表是所有構造函數都可以實現的.
  • 析構函數(用於釋放系統資源的函數)
    定義格式:

    class Student public: Student() { cout < < —Student() { cout < < private: string m_strName;

    析構函數特點:
    • 如果沒有自定義的析構函數,則系統自動生成
    • 析構函數在對象銷燬時自動調用(與之相對應,構造函數在對象實例化時自動調用)
    • 析構函數沒有返回值(構造函數也是如此)、沒有參數也不能重載
    • 不允許在()內加任何的參數
  • 【重要知識點】對象的生命歷程
申 請 內 存 初 始 化 列 表 構 造 函 數 釋 放 內 存 與 析 構 函 數
  • 【總結】成員函數的分類
    成 員 函 數 特 殊 函 數 屬 性 封 裝 函 數 構 造 函 數 一 般 功 能 函 數 析 構 函 數 拷 貝 構 造 函 數 默 認 構 造 函 數
    成員函數的參數修飾方式
    引 用 參 數 默 認 值 成 員 函 數 const 函 數 重 載
    對象實例化的方式
    引 用 對 象 實 例 化 const 堆 中 實 例 化 棧 中 實 例 化
    定義一個函數只要不是函數聲明,就要記着寫{},即使{}不寫任何的語句。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章