構造函數(constructor)


定義:類通過一個或幾個特殊的成員函數來控制其對象的初始化過程,這些函數叫做構造函數。

作用:構造函數的任務是初始化類對象的數據成員,無論何時只要類的對象被創建,就會執行構造函數。

Tips:構造函數不能被聲明稱const。


構造函數幾種形式:

  • 默認構造函數(=default):如果類沒有顯示地定義構造函數,那么編譯器就會為類隱式地定義一個默認構造函數。
Solution() = default; 
  • 構造函數初始值列表:負責為新創建的對象的一個或幾個數據成員賦初值。
//初始化
Sales_data(const string &s, unsigned n, double p) : bookNo(s), units_sold(n), revenue(p*n) {}
  • 在類的外部定義構造函數:
//賦值
 Sales_data::Sales_data(const string &s, unsigned n, double p)
{
        bookNo = s;
        units_sold = n;
        revenue = n * p;
}

初始化與賦值:

前者是直接初始化數據成員,后者則是先初始化再賦值。

如果成員是const或者是引用的話,必須將其初始化?;蛘?,當成員屬于某種類類型且該類沒有定義默認構造函數時,也必須將這個成員初始化。

隨著構造函數體一開始執行,初始化就完成了。因此,初始化const或者引用類型的數據成員的唯一機會就是通過構造函數初始值。

  • 委托構造函數:使用所屬類的其他構造函數執行委托構造函數的初始化過程,或者說他把自己的一些或全部職責委托給了其他構造函數。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容