1. 程式人生 > >C++筆記(2017/2/9)

C++筆記(2017/2/9)

靜態成員 目的 類之間的關系 c++ 聲明 出現 stat logs mut

this指針

  • this指針作用就是指向成員函數所作用的對象。
  • 非靜態成員函數中可以直接使用this來代表指向該函數作用的對象的指針。
  • 靜態成員函數中不能使用this指針。

靜態成員 static

  • 定義:在定義前面加了static關鍵字的成員。
  • 普通成員變量每個對象有各自的一份,而靜態成員變量一共就一份,為所有對象共享。
  • 普通成員函數必須具體作用於某個對象,而靜態成員函數並不具體作用於某個對象。
  • 靜態成員不需要通過對象就能訪問。
  • 如何訪問靜態成員:
    • 類名::成員名。
    • 對象名.成員名。
    • 指針->成員名。
    • 引用.成員名 。
  • 靜態成員變量本質上是全局變量,即使一個對象都不存在,類的靜態成員變量也存在。
  • 靜態成員函數本質上是全局函數。
  • 設置靜態成員這種機制的目的是將和某些類緊密相關的全局變量和函數寫到類裏面,看上去像一個整體,易於維護和理解。
  • 在靜態成員函數中,不能訪問非靜態成員變量,也不能調用非靜態成員函數。

成員對象和封閉類

  • 有成員對象的類叫封閉類
  • 封閉類對象生成時,先執行所有對象成員的構造函數,然後才執行封閉類的構造函數。
  • 對象成員的構造函數調用次序和對象成員在類中的說明次序一致,與它們在成員初始化列表中出現的次序無關。
  • 當封閉類的對象消亡時,先執行封閉類的析構函數,然後再執行成員對象的析構函數。次序和構造函數的調用次序相反。
  • 封閉類的對象,如果是用默認復制構造函數初始化的,那麽它裏面包含的成員對象, 也會用復制構造函數初始化。

友元 friends

  • 友元函數: 一個類的友元函數可以訪問該類的私有成員。
  • 友元類:如果A是B的友元類,那麽A的成員函數可以訪問B的私有成員。
  • 友元類之間的關系不能傳遞,不能繼承。

常量成員函數

  • 在類的成員函數說明後面可以加const關鍵字,則該成員函數成為常量 成員函數。
  • 常量成員函數內部不能改變屬性的值,也不能調用非常量成員函數。
  • 在定義常量成員函數和聲明常量成員函數時都應該使用const 關鍵字。
  • 如果一個成員函數中沒有調用非常量成員函數,也沒有修改成員變量的值,那麽,最好將其寫成常量成員函數。
  • 兩個函數,名字和參數表都一樣,但是一個是const,一個不是,算重載。
  • mutable
    成員變量可以在const成員函數中被修改。

C++筆記(2017/2/9)