c++ 之private /protect/ public

C++中public、protect、private的訪問權限控制

訪問權限html

一個類的public成員變量、成員函數,能夠經過類的成員函數、類的實例變量進行訪問函數

一個類的protected成員變量、成員函數,沒法經過類的實例變量進行訪問。可是能夠經過類的友元函數、友元類進行訪問。spa

一個類的private成員變量、成員函數,沒法經過類的實例變量進行訪問。可是能夠經過類的友元函數、友元類進行訪問。htm

 

繼承權限
public繼承
派生類經過public繼承,基類的各類權限不變 。
派生類的成員函數,能夠訪問基類的public成員、protected成員,可是沒法訪問基類的private成員。
派生類的實例變量,能夠訪問基類的public成員,可是沒法訪問protected、private成員,彷彿基類的成員之間加到了派生類通常。
能夠將public繼承當作派生類將基類的public,protected成員囊括到派生類,可是不包括private成員。對象

protected繼承
 派生類經過protected繼承,基類的public成員在派生類中的權限變成了protected 。protected和private不變。
派生類的成員函數,能夠訪問基類的public成員、protected成員,可是沒法訪問基類的private成員。
派生類的實例變量,沒法訪問基類的任何成員,由於基類的public成員在派生類中變成了protected。
能夠將protected繼承當作派生類將基類的public,protected成員囊括到派生類,所有做爲派生類的protected成員,可是不包括private成員。
private成員是基類內部的隱私,除了友元,全部人員都不得窺探。派生類的友元,都不能訪問blog

private繼承
派生類經過private繼承,基類的全部成員在派生類中的權限變成了private。
派生類的成員函數,能夠訪問基類的public成員、protected成員,可是沒法訪問基類的private成員。
派生類的實例變量,沒法訪問基類的任何成員,由於基類的全部成員在派生類中變成了private。
能夠將private繼承當作派生類將基類的public,protected成員囊括到派生類,所有做爲派生類的private成員,可是不包括private成員。
private成員是基類內部的隱私,除了友元,全部人員都不得窺探。派生類的友元,都不能訪問繼承

總結:繼承修飾符,就像是一種篩子,將基類的成員篩到派生類。public、protected、private,就是篩子的眼。
經過public繼承,全部基類成員(除了private),public、protected都到了派生類裏面,public篩眼比較大,不會改變訪問權限。
經過protected繼承,全部基類成員(除了private),public、protected都到了派生類裏面,protected篩眼大小適中,全部過來的成員都變成了protected。
經過private繼承,全部基類成員(除了private),public、protected都到了派生類裏面,private篩眼最小,全部過來的成員都變成了private。get

 

繼承總結:權限控制

1.private 、protect 、public 繼承base類後,子類的成員函數都只能訪問base類中public、protect中的成員變量

2.子類實例化一個對象後,對象只能調用和訪問子類中的public成員父類成員在子類中的訪問權限 1.看其在父類中的訪問權限 2.看子類繼承父類的權限)

成員:成員變量和成員函數。

 

轉自 http://www.javashuo.com/article/p-bwgmaphl-gt.html

相關文章
相關標籤/搜索