c++ 訪問許可權問題主要包括兩種:一種是外界對類成員的普通訪問,主要通過類內的public、protected、private許可權修飾符;另一種是繼承關係中子類對父類成員的訪問。
基本原則:外界只能訪問類中public成員,子類可訪問父類的public和protected成員;不同繼承方式只影響外界(包括子類的子類)通過子類對父類成員的訪問許可權。
1. 當類成員在類中為public許可權時,才可在類外訪問,其餘不可訪問。
2. 若存在繼承關係,從父類繼承來的成員若在該類中仍具有public許可權,也可在類外訪問,其餘不可訪問。
1. 無論通過什麼方式(public、protected、private)繼承,在子類內部均可訪問父類中的public、protected成員,private成員不可訪問。
注意:繼承方式只影響外界(包括子類的子類)通過子類對父類成員的訪問許可權。
public繼承,父類成員的訪問許可權全部保留至子類;
protected繼承,父類public成員的訪問許可權在子類中降至protected;
private繼承,父類public、protected成員的訪問許可權在子類中均降至private。
2. 父類的析構函式若宣告為protected (無論有無virutal),外界均不可呼叫delete 父類指標;因為是protected許可權,子類析構後會自動呼叫父類析構函式。
這種情況下,最好不要在父類成員中有動態記憶體分配。
3. 通過protected/private繼承的子類,不能通過static_cast/dynamic_cast向父類轉換;只能通過reinterpret_cast引用或指標的方式強制轉換,按照父類記憶體結構重新解釋,可改變成員的訪問許可權。
類的訪問許可權及繼承許可權
類的繼承後方法屬性變化 private 屬性不能夠被繼承。使用private繼承,父類的protected和public屬性在子類中變為private 使用protected繼承,父類的protected和public屬性在子類中變為protected 使用public繼承,父類中的protecte...
繼承訪問許可權
當子類繼承了某個類後,便可以使用父類中的成員變數,當並不是完全繼承父類的所有成員變數,具體原則如下 變數原則 1 能夠繼承父類的public和protected變數.不能夠繼承父類的private變數 package test1 class son public class a extends so...
C 類的繼承 訪問許可權 虛繼承
今天突然發現自己關於類的繼承,虛基類,訪問許可權混在在一起的時候有有一些模糊,所以今天進行重新學習一下。如果錯誤或者不對的地方,還請指教。一 類的繼承方式 類有三種成員成員,private,protected,public,基類的成員 派生方式 子類訪問特性 public protected pri...