淺談C++ 類(二)

  • 一、定義類相關的非成員函數
淺談C++ 類(二)

add函數,ostream函數,istream函數均屬於輔助函數,在概念是屬於類,但不定義在類中。

Note:一般來說,如果非成員函數是類接口的組成部分,則這些函數的聲明應該與類在同一個頭文件內。

read和print函數說明:

① read和print分別接受一個各自IO類型的引用作為其參數,這是因為IO類屬於不可拷貝型,只能通過引用來傳遞它們。而且,因為讀取和寫入的操作會改變流的內容,所以兩個函數接受的都是普通引用,而不是常量引用。

② print函數不負責換行。

構造函數

每個類都分別定義了它的對象被初始化的方式,類通過一個或幾個特殊成員函數來控制其對象的初始化過程,這些函數叫做構造函數。其任務是初始化類對象的數據成員。

構造函數

① 名字與類名相同

② 構造函數沒有返回類型

③ 有參數列表(可能為空)和一個函數體(可能為空)

④ 類可以包含多個構造函數

默認構造函數初始化類數據成員的規則(如圖):

① 如果存在類內的初始值,用它來初始化成員。

② 否則,默認初始化該成員

淺談C++ 類(二)

某些類不能依賴於合成的默認構造函數

① 只有當類沒有聲明任何構造函數時,編譯器才會自動生成默認構造函數。一旦我們定義了其他的構造函數,我們需要在定義一個默認的構造函數,否則類將沒有默認構造函數

② 如果類包含有內置類型或者複合類型(如數組,指針)的成員(因為這些成員不能被默認初始化),只有這些成員全都賦予了類內的初始值時,這個類才能使用合成的默認構造函數。

③ 有時編譯器不能為某些類合成默認的構造函數(後邊介紹無法合成默認構造函數的情況)


分享到:


相關文章: