我要去通過在C繼承的概念++,並試圖這樣的代碼:有沒有辦法調用基類函數,它在派生類中使用了私有繼承?
class base{
public:
void display(int j)
{
cout<<j<< " base "<<endl;
}
};
class derived:private base{
public:
using base::display;
void display(int k)
{
cout<<k<< " derived "<<endl;
}
};
int main()
{
derived obj;
obj.display(10);
//obj.base::display(46); --> cannot be used as base is privately inherited. Also conversion from derived to base cannot happen in this case.
return 0;
}
在上述情況下,是否有任何方式通過在反正使用obj
調用從主基類display
功能?
如果基函數沒有在派生類中被覆蓋,那麼通過using
(如果基函數在派生類中被重載函數隱藏),我可以在派生類中聲明它並使用派生類obj
調用它。但是在基函數被派生於私有繼承的情況下,有沒有辦法調用基函數?當我學習C++時,我只是好奇地想知道是否有任何方法可以做到這一點(不考慮任何實際的用例)。
'私人'繼承是特殊的,可能是最少使用。如果你想從基地訪問一個方法,那麼你只是不使用私有繼承 – user463035818
@ tobi303正如OP指出的,如果你不覆蓋它,你可以使用私有繼承與公共'using'。如果您只想看到基類的某些功能,這非常有用。例如。 –
@ tobi303,謝謝你的迴應。我知道訪問基類函數的方法。但我只是很想知道**我清楚提到的這個特例**。因爲如果函數沒有被覆蓋,我可以用派生對象調用基類函數,即使它們是隱藏的。 –