頭文件與類的聲明
1.類的一種分類:帶指針與不帶指針的
2.<>包編譯環境已有的頭文件
3.“”包自己寫的頭文件
4.防衛式聲明:
#ifndef_COPLEX_
#define_COPLEX_
…
#endif
防止第二次include重復操作
5.頭文件布局
前置聲明
類聲明
類定義
6.模板,類少量改動時,使用模板減少重復代碼
Template
//T是類里要替換的部分
構造函數
1.inline在本體內定義。函數“比較快”
2.inline只是一個對編譯器的建議,實際執行不一定
3.private不能在外部被訪問,public可以
4.受過專業訓練的構造函數寫法:(帶初值列)
Complex(double r
= 0, double I = 0):re(r), im(i){}//=后的0為默認參數
如果在{}里寫“初值”,相當于放棄了初始化的階段
5.多數不帶指針的類不用寫析構函數
6.構造函數的重載(overloading)編譯之后同名函數將不同名;重載函數不能有歧義
7.(問題)創建對象時,在后面帶括號和不帶括號有什么區別?
查閱結果:new關鍵字創建對象時對于內置類型:加括號會初始化,不加括號不初始化;對于自定義類型,都會調用默認構造函數,加不加括號沒區別。
來源:http://blog.csdn.net/spaceyqy/article/details/22730939
參數傳遞與返回值
1.構造函數能放在private區Singleton
2.const complex&常引用,地址傳參,不改變原值
3.不改變值的成員函數,()后加上const,這樣如果之后定義了一個const的對象,再使用這個函數不會報錯
4.函數返回類型后加&返回引用
5.friend自由取得friend的private成員
6.相同class的各object互為友元
7.不能返回函數內部局部變量的引用
操作符重載與臨時對象
1.Typename()也是強制類型轉換,臨時對象,這類返回不能用引用,生命周期到下一行就結束。
2.Cout是ostream的一個對象
3.調用成員函數的對象,在函數里會有一個this指針指向它
4.操作符重載最好返回引用,因為用戶有可能用操作符連用
5.函數里產生了局部對象(local object),返回時不可以返回引用
6.<<操作符在重載時,考慮連用的話應該返回ostream&