如果B
繼承自A
使用public
,B
可以覆蓋其中一個函數並強制它是私有的嗎?C++:覆蓋public/private繼承
class A
{
public:
virtual double my_func1(int i);
virtual double my_func2(int i);
}
class B : public A // Notice the public inheritance
{
public:
virtual double my_func1(int i);
private:
virtual double my_func2(int i);
}
另一種方式呢?如果繼承類型是私有的 - B
可以強制某個特定的函數公開嗎?
如果A
是純粹的抽象呢?這有什麼不同嗎?
protected
會在任何組合中有所不同嗎?
雖然我選擇這個作爲答案,但我建議閱讀其他答案以獲取更多細節 – Jonathan 2011-05-01 22:02:21
因此,私人繼承是危險的嗎?因爲您認爲所有內容都無法訪問,但您可以通過基類訪問私有虛擬方法。 – 2014-08-01 11:00:48
@蘇哈諾夫:不,這並不危險,因爲派生階級完全控制是否可以訪問其私有基類。所以「A * a = new B();」當A是B的私有基類時,不允許使用。 – 2016-02-11 17:36:27