假設我有兩個類:祖父,父親。父親延伸祖父。祖父有一個名爲a
的公共int變量。C++一個類的對象是否可以直接訪問超類的公共變量
如果我在main中創建一個Father類的對象,該對象是否可以直接訪問Grandfather中的公共成員變量a
?
例如,我嘗試了類似下面的內容,但編譯器說a
無法訪問。但是因爲a
是公開的,不應該從父親的對象直接訪問它嗎?
int main()
{
Father father;
cout << father.a;
}
假設我有兩個類:祖父,父親。父親延伸祖父。祖父有一個名爲a
的公共int變量。C++一個類的對象是否可以直接訪問超類的公共變量
如果我在main中創建一個Father類的對象,該對象是否可以直接訪問Grandfather中的公共成員變量a
?
例如,我嘗試了類似下面的內容,但編譯器說a
無法訪問。但是因爲a
是公開的,不應該從父親的對象直接訪問它嗎?
int main()
{
Father father;
cout << father.a;
}
這取決於父親從祖父如何繼承:
// Inherit from Base publicly
class Father: public Grandfather
{
}; // father.a is accessible from main()
// Inherit from Base privately
class Father: private Grandfather
{
}; // father.a is NOT accessible from main()
// Inherit from Base protectedly
class Father: protected Grandfather
{
}; // father.a is NOT accessible from main()
class Father: Grandfather // Defaults to private inheritance
{
}; // father.a is NOT accessible from main()
話雖如此,但要區分,如果a
是在祖父公衆,那麼它是從內部父親的任何方法訪問,任何這些遺產。請注意,這不是你在你的例子中所做的 - 你直接從main()訪問a
,這可以被認爲是外部的父親和祖父的。
將類聲明/定義添加到您的代碼片段中。 –
'a'是一個靜態成員嗎?或'Father.a'應該是'father.a'? – Arkadiy
代碼已被更正 – navig8tr