5
A
回答
5
它可以工作,因爲派生類可以覆蓋基類的私有虛函數,即使基類函數覆蓋了它的基類函數。
這是完全合法的:
class Parent
{
public:
int foo() {return bar();} // the non-virtual public interface
private
virtual int bar();
};
class Child : public Parent
{
private:
virtual int bar(); // overrides Parent::bar()
};
class Grandchild : public Child
{
private:
virtual int bar(); // overrides Child::bar();
};
1
一個基類派生類可自行決定它的工作原理:
你可以通過實現虛函數完全覆蓋該方法。 您可以通過在派生類方法中的某處調用「中間」類函數來擴充該方法。
如果這不是你想要的,你需要在'中間'類中明確地設置它。我不會。如果你發現自己渴望這一點,這可能意味着你沒有給基類足夠的定製點。
相關問題
- 1. systemverilog中的繼承和虛擬接口?
- 2. 繼承虛擬類和非虛類
- 3. 好習慣?虛擬對象
- 4. 虛擬繼承
- 5. 虛擬繼承
- 6. 覆蓋C++中的非虛擬繼承
- 7. 非虛擬地使用虛擬繼承函數?
- 8. 從非虛擬父類虛擬類繼承的正確方式
- 9. C++中的虛擬與非虛擬多重繼承
- 10. C++中的虛擬繼承
- 11. 的在C++虛擬繼承
- 12. 非虛擬接口 - 如何調用正確的虛擬功能
- 13. 聯盟虛擬繼承
- 14. 從基類虛擬繼承
- 15. 問題在虛擬繼承
- 16. C++虛擬繼承差
- 17. 虛擬繼承查詢
- 18. 虛擬繼承在vs2013
- 19. 虛擬類和繼承
- 20. 虛擬繼承混亂
- 21. 只找到非繼承的接口?
- 22. 正確的方式從具有非虛擬父項的虛擬課堂繼承
- 23. 關於虛基類和虛擬繼承在C++
- 24. 爲什麼基類繼承兩次,即使其中一個繼承爲虛擬?
- 25. 虛擬繼承的其他選擇?
- 26. 繼承中的虛擬呼叫
- 27. 什麼是go lang的虛擬繼承?
- 28. 虛擬繼承中的優勢
- 29. 從兩個分層接口繼承?