class B{
private:
void DoSomething();
}
class W{
private:
class D: public B{
}
D d;
}
我可以在W類的範圍內調用D的基類中的私有成員函數嗎?繼承問題
class B{
private:
void DoSomething();
}
class W{
private:
class D: public B{
}
D d;
}
我可以在W類的範圍內調用D的基類中的私有成員函數嗎?繼承問題
沒有。除了擁有它的類以外,您無法從任何地方調用私有成員函數。如果您希望派生類能夠訪問它,請聲明它受保護。
你也可以聲明D是B類的'朋友';這將允許D訪問B.DoSomething()。但是,這種方法通常是不被接受的。
函數DoSomething只有在聲明爲public或private時纔可以在類之外訪問。除了上面提到的阿里克,繼承的階級可以成爲朋友來實現同樣的目標。
另一種方法是聲明/定義函數爲虛擬的,而不定義子/繼承類的虛擬定義。這樣做,將調用基類的函數定義。
訪問它。[我的答案]第一行中的一個小小的更正,我提到它是「公開還是私人」。它應該是「公開或受保護的」 – 2009-07-15 03:15:02
@Roopesh你可以編輯答案來糾正它,而不是留下評論。只是讓你知道StackOverflow提供了這個選項。 – MadMurf 2009-07-15 03:18:37
不,如果您使用保護關鍵字,那麼你可以。它是一個嵌套類的事實是無關緊要的。
家庭作業?爲什麼不編譯它並嘗試? – beggs 2009-07-15 03:05:56