C++中public protected private關鍵字

訪問權限
  1. public 公共接口 :向外界開放,可通過對象或類名訪問
  2. protected 受保護的訪問:只向子類開放訪問權限 ,不可通過對象訪問
  3. private私有 :只有類成員可以訪問,外界不可以通過任何形式訪問
繼承關係
  1. public繼承:父類成員的訪問權限在子類中不變,仍爲自己原來的權限。
  2. protected繼承:父類的public成員訪問權限在子類中變爲protected;父類的protected成員和private成員在子類權限維持原來的權限不變
  3. private繼承:父類的所有成員訪問權限 子類中變爲private
   其中,public繼承是is-a的關係,可以用父類的指針或者引用指向子類的對象;protected和private繼承沒有is-a的關係,只表示“組合”或者“擁有”的關係,不可以用父類的指針或引用指向子類對象。
   C++對象模型中,子類對象的內存空間中包含父類的部分,當用父類指針指向一個子類的對象實時,這個指針可以訪問的是相應的父類那部分的內存;在protected和private繼承的情況下,父類的內存部分是私有的,不對外開放的,所以,protected和private繼承時,不可以用父類的指針或引用指向子類對象。

  通過對象訪問成員時,只能訪問到共有(Public)成員。

  需要禁止類以構造形式實例化類的時候,可以將類的構造函數聲明爲private 和protected 的形式。構造函數聲明protected 的形式的類不能被直接實例化,但可以通過被繼承,子類可以在實例化的時候調用父類的protected構造函數。
  構造函數聲明爲private的類的實例化不能依賴構造函數,可以提供public 的Instance()的方法,在Instance()定義中調用構造函數,返回類的實例。單例模式就是利用這個原理。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章