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