- 一、定義類相關的非成員函數
add函數,ostream函數,istream函數均屬於輔助函數,在概念是屬於類,但不定義在類中。
Note:一般來說,如果非成員函數是類接口的組成部分,則這些函數的聲明應該與類在同一個頭文件內。
read和print函數說明:
① read和print分別接受一個各自IO類型的引用作為其參數,這是因為IO類屬於不可拷貝型,只能通過引用來傳遞它們。而且,因為讀取和寫入的操作會改變流的內容,所以兩個函數接受的都是普通引用,而不是常量引用。
② print函數不負責換行。
構造函數
每個類都分別定義了它的對象被初始化的方式,類通過一個或幾個特殊成員函數來控制其對象的初始化過程,這些函數叫做構造函數。其任務是初始化類對象的數據成員。
構造函數:
① 名字與類名相同
② 構造函數沒有返回類型
③ 有參數列表(可能為空)和一個函數體(可能為空)
④ 類可以包含多個構造函數
默認構造函數初始化類數據成員的規則(如圖):
① 如果存在類內的初始值,用它來初始化成員。
② 否則,默認初始化該成員
某些類不能依賴於合成的默認構造函數:
① 只有當類沒有聲明任何構造函數時,編譯器才會自動生成默認構造函數。一旦我們定義了其他的構造函數,我們需要在定義一個默認的構造函數,否則類將沒有默認構造函數。
② 如果類包含有內置類型或者複合類型(如數組,指針)的成員(因為這些成員不能被默認初始化),只有這些成員全都賦予了類內的初始值時,這個類才能使用合成的默認構造函數。
③ 有時編譯器不能為某些類合成默認的構造函數(後邊介紹無法合成默認構造函數的情況)
閱讀更多 編程語言學習 的文章