天天看點

C++學習筆記 (侯捷—上)

目錄

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++中,資料和函數包在一起,已這個混合體為整體,一起用,安全性高了,見圖一。

C++學習筆記 (侯捷—上)
C++學習筆記 (侯捷—上)
C++學習筆記 (侯捷—上)

2、c++的頭檔案與類的聲明

  • 頭檔案與程式之間關系:
C++學習筆記 (侯捷—上)
  • 頭檔案中的防衛式聲明:使得編譯器可以自己處理include檔案的順序,不會有重複的include.
C++學習筆記 (侯捷—上)
C++學習筆記 (侯捷—上)
  • 類的聲明
C++學習筆記 (侯捷—上)
C++學習筆記 (侯捷—上)

3、inline(内聯)函數

  • 函數定義在class内部完成的函數,inline像宏(macro)一樣,有宏的優點沒有他的缺點,但是隻有簡單的函數才可以inline,會比較快。(複雜函數即使設定為内聯函數,但最終由編譯器決定是否是内聯函數)
C++學習筆記 (侯捷—上)
C++學習筆記 (侯捷—上)

4、access level(通路級别)

  • 資料包起來,通過函數傳出去,保證安全性

C++學習筆記 (侯捷—上)

5、構造函數

  • 在創造對象時,自動調用的函數就是構造函數。
  • 構造函數的名稱一定要和class名一樣
  • 構造函數可以有預設值
  • 沒有傳回值類型
  • 内部是把收到的參數給對象的值指派,最好用初始化清單(隻有構造函數才有),當然也可以在函數體内加。
C++學習筆記 (侯捷—上)
  • 程式中不可能調用構造函數,他是在建立對象時自動調用的。
  • 構造函數常常可以有多個定義—重載(可以有多種初始化的方式),但是當計算機不能分别到底是那種形式時,就會報錯。
C++學習筆記 (侯捷—上)
  • 構造函數被放在private表示該函數不能被外界調用(不能建立對象),常用在某種類隻有一個自己的對象,如Singleton模式
    C++學習筆記 (侯捷—上)
    C++學習筆記 (侯捷—上)

6、常量成員函數 : const member functions

  • 不改變資料值的成員函數要加const.
C++學習筆記 (侯捷—上)

7、參數傳遞: pass by value vs. pass by reference(to const)

  • 傳 值(by value):value多大就整個傳過去。
  • 傳引用(by reference):類似于c的指針那麼快,把value的位址傳過去。
  • 盡量傳引用,不要傳變量(4個字元)。
  • 但是傳指針或者引用時,函數改了值,會影響我,是以此時傳給const.
C++學習筆記 (侯捷—上)

8、傳回值傳遞:return by value vs. return by reference(to const)

  • 盡量用reference
C++學習筆記 (侯捷—上)

9、friend 友元

  • 同一個類的各個對象互為友元,可以傳遞資料。
C++學習筆記 (侯捷—上)
C++學習筆記 (侯捷—上)

10、定義類的注意事項

  • 資料在pritvate
  • 傳值(傳回)盡量以引用reference傳遞

注意:不推薦pass(return) by reference的幾種情況:

  1. 函數操作結果是一個臨時變量,就不要傳引用,因為引用會使得在外部也看到臨時變量,會出問題。
  2. 引用最大的特點就是他會改變相關聯的的幾個變量值。
C++學習筆記 (侯捷—上)
  • 函數body中該加const要加
  • 構造函數指派盡量用參數清單傳遞

11、

繼續閱讀