目錄
1、C與C++的差別:
2、c++的頭檔案與類的聲明
3、inline(内聯)函數
4、access level(通路級别)
5、構造函數
6、常量成員函數 : const member functions
7、參數傳遞: pass by value vs. pass by reference(to const)
8、傳回值傳遞:return by value vs. return by reference(to const)9、friend 友元
1、C與C++的差別:
c語言中,資料和函數分開的,缺點是資料必須是全局的,這樣函數都可以通路,安全性不高,但是C++中,資料和函數包在一起,已這個混合體為整體,一起用,安全性高了,見圖一。
2、c++的頭檔案與類的聲明
- 頭檔案與程式之間關系:
- 頭檔案中的防衛式聲明:使得編譯器可以自己處理include檔案的順序,不會有重複的include.
- 類的聲明
3、inline(内聯)函數
- 函數定義在class内部完成的函數,inline像宏(macro)一樣,有宏的優點沒有他的缺點,但是隻有簡單的函數才可以inline,會比較快。(複雜函數即使設定為内聯函數,但最終由編譯器決定是否是内聯函數)
4、access level(通路級别)
- 資料包起來,通過函數傳出去,保證安全性
5、構造函數
- 在創造對象時,自動調用的函數就是構造函數。
- 構造函數的名稱一定要和class名一樣
- 構造函數可以有預設值
- 沒有傳回值類型
- 内部是把收到的參數給對象的值指派,最好用初始化清單(隻有構造函數才有),當然也可以在函數體内加。
- 程式中不可能調用構造函數,他是在建立對象時自動調用的。
- 構造函數常常可以有多個定義—重載(可以有多種初始化的方式),但是當計算機不能分别到底是那種形式時,就會報錯。
- 構造函數被放在private表示該函數不能被外界調用(不能建立對象),常用在某種類隻有一個自己的對象,如Singleton模式
6、常量成員函數 : const member functions
- 不改變資料值的成員函數要加const.
7、參數傳遞: pass by value vs. pass by reference(to const)
- 傳 值(by value):value多大就整個傳過去。
- 傳引用(by reference):類似于c的指針那麼快,把value的位址傳過去。
- 盡量傳引用,不要傳變量(4個字元)。
- 但是傳指針或者引用時,函數改了值,會影響我,是以此時傳給const.
8、傳回值傳遞:return by value vs. return by reference(to const)
- 盡量用reference
9、friend 友元
- 同一個類的各個對象互為友元,可以傳遞資料。
10、定義類的注意事項
- 資料在pritvate
- 傳值(傳回)盡量以引用reference傳遞
注意:不推薦pass(return) by reference的幾種情況:
- 函數操作結果是一個臨時變量,就不要傳引用,因為引用會使得在外部也看到臨時變量,會出問題。
- 引用最大的特點就是他會改變相關聯的的幾個變量值。
- 函數body中該加const要加
- 構造函數指派盡量用參數清單傳遞