我真的(很)很長時間沒有使用C++,這個問題可能很愚蠢,但我真的可以使用一些幫助。在C++中訪問基類私有成員
如果我的基類具有私有數據成員,並且派生類是公開派生的,則基類的私有成員不會被繼承。但是,它們仍然可以通過繼承的公共函數訪問。例如:
class B{
int a,b;
public:
void SetA(int);
int GetA();
};
class D:public B{
public:
SetAAttribute(int x)
{ SetA(x); }
}
現在,我的問題如下: 技術上,在派生類對象沒有上定義的「a」屬性。通俗地說,我基本上是在一個實體上設置一個屬性,而這個屬性甚至不存在於這個實體中。想象這樣一個概念似乎很不直觀。我理解正確嗎?
任何額外的解釋或更正將不勝感激。
'a'屬性存在,你只是沒有直接訪問它,因爲它是私人的。 –
你可以讓你的基類成員'protected'被繼承,但是否則有私有屬性。 – chris