Week1-3
一 內斂函數(shù)
#1 函數(shù)若在class body類內定義完成蒜焊,便自動成為inline单刁。inline函數(shù)的好處捉超,inline只是你對編譯器的一個建議,最后是不是inline函數(shù)羞福,要由編譯器決定惕蹄。
#2 如果函數(shù)太復雜,編譯器就沒法把它當作inline函數(shù)治专。
二 構造函數(shù)
#1 構造函數(shù)的初始化列表。只有構造函數(shù)才有的寫法遭顶。函數(shù)重載常常發(fā)生在構造函數(shù)身上张峰。
#2 構造函數(shù)可以有很多個。不能同時有兩個默認構造函數(shù)棒旗。
complex (double r = 0, double i = 0): re(r), im(i){}
complex () : re(0), im(0) {} 這兩種構造函數(shù)喘批,會引起編譯器調用沖突,比如complex c1; complex c2();
#3 一般情況下铣揉,不允許構造函數(shù)放在private區(qū)饶深,但有一種情況例外,singleton設計模式逛拱,即只允許外界有一個class對象敌厘。
三 常量成員函數(shù) double real () const? {return re;}
#1? 不改變類內私有數(shù)據成員朽合,函數(shù)后要加const俱两。
#2 常對象不可以調用非常成員函數(shù)。
四 設計函數(shù)曹步,對于參數(shù)傳遞宪彩,盡量傳引用。盡量采用參數(shù)值引用傳參讲婚。如果不想改變原來的值尿孔,函數(shù)形參前可以加const。返回值傳遞筹麸,也盡量傳引用活合。函數(shù)內部定義的局部變量,不可以返回其引用竹捉。
五 friend(友元)芜辕。友元直接拿去私有數(shù)據,比通過調用成員函數(shù)直接拿去數(shù)據要快很多块差。
六 typename()侵续;創(chuàng)建臨時對象倔丈。
六 相同類的各個對象互為友元。
七 好的類的特點状蜗。
1.數(shù)據放在private需五。2.函數(shù)按引用傳值。 3.返回值盡量按引用傳遞轧坎。4.成員函數(shù)宏邮,應該加const的,要加const缸血。5.盡量用構造函數(shù)的初始化列表初始化數(shù)據成員蜜氨。
八 運算符的重載,類內與類外兩種捎泻。 類外必須是全局函數(shù)飒炎。W1-5.
九 傳遞者無需知道接收者是以引用形式接收。
十 面向對象笆豁,任何一種函數(shù)郎汪,你可以設計為成員函數(shù)或者全局函數(shù)。
十一 操作符重載闯狱,有兩種寫法煞赢。1.成員函數(shù)的寫法。2.非成員函數(shù)的寫法(寫為全局函數(shù))哄孤。對于<<輸出操作符照筑,只能寫成全局函數(shù)。
十二 用成員函數(shù)重載+=運算符時录豺,形式參數(shù)只需要寫右邊要傳入的參數(shù)朦肘,左邊會作為隱藏的參數(shù)傳入。
十三 把+設計為全局函數(shù)双饥,可以實數(shù)與復數(shù)相加媒抠,+=設計為類內成員函數(shù)。這里有點疑問咏花。暫且擱置趴生。
十四 兩種類
#1 帶指針的類與不帶指針的類。不帶指針的類昏翰,大多不用寫析構函數(shù)苍匆。