1樓:匿名使用者
公有繼承不改變基類成員的屬性,也就是說基類的protected成員在子類中還是protected屬性。
而類的物件是不能訪問protected成員的,但類的成員函式是能訪問protected成員的。
所以,基類的成員函式能呼叫自己的protected成員(其物件不能),子類的成員函式也能呼叫基類的protected成員(其物件不能)
class a
protected:
void print()
{cout<<"x point:"<
綜上:保護成員在對於類物件來說訪問許可權和私有成員一樣,但是對於子類來說,子類能訪問基類保護成員,但不能訪問基類私有成員。
c++中,基類中的private跟protected成員許可權上有什麼區別? 20
2樓:匿名使用者
protected 的主要用途是在類的繼承中。
父類中protected的成員在子類中可見(可以直接訪問)但是父類的private在子類中是不可見的。
另外你的「private只能是基類public來訪問」是有問題的,這麼表達不清楚,你的意思是不是用public的函式來訪問private的成員?
3樓:匿名使用者
public成員可以在基類訪問
也可以在子類訪問,還可以使用基類和子類的物件訪問。
protect成員可以在基類訪問也可以在子類訪問,不能使用物件訪問。
private成員只能在基類中訪問,不能再子類訪問,不能使用物件訪問。
以上基於public派生,否則基類的public成員在子類如果不再是public成員,則不能使用子類的物件訪問。
個人一個經驗是,在基類訪問、在子類訪問、使用物件訪問,新手需要很久才能熟練深刻區分這幾個概念。
4樓:匿名使用者
加上這兩句話,這些煩惱就全解決了!
#define protected public
#define private public
c++中,類的protected究竟有什麼作用?
5樓:可以叫我表哥
protected專門就是為繼承(子類)設計的 用public繼承,基類所有的訪問標識在子類不變, protected還是protected 。
c++程式設計思想中是這麼說的,public意味著隨後的定義對所有人都適用;private意味著除了該型別的建立者和該型別的內部成員函式之外,任何人都無法訪問這些定義;而protected是繼承的類可以訪問protected的成員,但不能訪問private的成員。
6樓:匿名使用者
- 宣告 private protected public
繼承private x x x
protected x o o
public x o o
類外呼叫 x x o
由上圖可見protected和public的區別:
在類外呼叫時,可以呼叫public成員,但是不能呼叫protected成員
也就這一個區別了。
7樓:趕緊擼毅管
錯了,不管何種繼承,基類的private成員派生類都無法訪問,當然也就出現了protected成員,集合了public成員(對派生類) 和 private成員(對外部訪問)的特點。
8樓:匿名使用者
protected成員
被公有繼承時,在你派生的這個類的內部成員中,能夠訪問。
比如class a
;class b : public a
//你可以在派生類b中訪問到父類a的成員n。
~b(){}
};但是你不能在類的外部訪問到父類的保護成員n。
比如下面的**就是錯誤的:
b x;
x.n = 1;
9樓:匿名使用者
c/c++
關鍵字protected關鍵字(c++和c#)
具有protected訪問控制級別的成員是半公開的,外界無法直接訪問這個控制級別的成員,但是派生類的base指標(在c++中也可用引用訪問)可以獲得訪問能力。protected與private基本相似,只有在繼承時有較大的區別。繼承的類可以訪問protected成員,但是不能訪問private成員。
以下是msdn提供的c# 中protected關鍵字的參考資料。
protected 關鍵字是一個成員訪問修飾符。受保護成員在它的類中可訪問並且可由派生類訪問。有關 protected 與其他訪問修飾符的比較,請參見可訪問性級別。
僅當訪問通過派生類型別發生時,基類的受保護成員在派生類中才是可訪問的。例如,請看以下**段:
// protected_keyword.csusing system;
class a
class b : a
}語句 a.x =10 將生成錯誤,因為 a 不是從 b 派生的。
結構成員無法受保護,因為無法繼承結構。
示例在此示例中,類 derivedpoint 從 point 派生;因此,可以從該派生類直接訪問基類的受保護成員。
// protected_keyword_2.cs
using system;
class point
class derivedpoint: point
, y = ", dp.x, dp.y); }}
輸出x = 10, y = 15
10樓:匿名使用者
起保護作用,protected只有繼承的類才可以訪問
C 中,類的protected究竟有什麼作用
protected專門就是為繼承 子類 設計的 用public繼承,基類所有的訪問標識在子類不變,protected還是protected c 程式設計思想中是這麼說的,public意味著隨後的定義對所有人都適用 private意味著除了該型別的建立者和該型別的內部成員函式之外,任何人都無法訪問這些...
c中基類能用派生類中的成員嗎
不能。派生類可以使用基類的,但基類無法訪問派生類中的成員資料或成員函式。因為基類不可能知道它的派生類有哪些成員資料或函式。不能。不能。不能,只能派生類使用基類的方法 c 中派生類如何使用基類中的資料成員 如果你是派生類例項,這個結果是正確的,派生後會覆蓋基類成員。派生類中繼承了基類的資料成員,只有基...
C基類怎麼呼叫派生類成員,C 的基類如何訪問其派生類的成員變數?
很簡單,在基類來中定義虛函源數,例如函bai數原型為 virtual void printinfo 在類 undergraduate 及 graduate 在 printinfo 中分別du輸出各自zhi 資訊即可。這時dao呼叫基類的 printinfo 函式就可輸出派生類資訊 只需在基類中定ba...