2011-03-31 82 views
2

可以按照我們希望的方式更改繼承類的接入級別嗎?更改繼承類的級別

class Base { 

public: 
    size_t x; 

protected: 
    size_t y; 
}; 


class Derived : private Base { 

protected: 
    size_t x; 

public: 
    size_t y; 
}; 

是否Base類繼承只有私有成員或Base所有成員將private默認?我試圖交換訪問級別,但我不明白我在這裏做什麼?

+0

你的意思是「衍生類繼承...」 – 2011-03-31 19:30:57

+0

是的,我的意思是說。 – Ant 2011-03-31 19:33:53

回答

3

不,Derived不能突然決定它會偷取閱讀privateBase中的成員的能力。

你實際上在做什麼是完全創建不同的變量在Derived,它們碰巧具有相同的名稱。

+1

[...]並隱藏基類變量。 – Xeo 2011-03-31 19:52:31

+0

@Xeo:確實。我以爲我會在那一天離開那個細節,因爲它與這裏沒有直接的關係,而現在知道這種方法不是他想要的 - 不會再深入他的嘗試,因爲他會發現隱藏的名字作爲問題。 – 2011-03-31 23:09:20

2

當您從Base繼承private修飾符時,會發生什麼情況:只有Derived類才能訪問Base的成員。如果您決定創建從Derived繼承的AnotherDerived,那麼您將無法訪問Base的任何成員。

有關繼承和訪問說明符的更多信息,請檢查link