C中,基類protected能給子類直接呼叫

2021-03-19 18:18:23 字數 2944 閱讀 6832

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...