如果我有C++:C++虛函數的實現?
class A {
private: virtual int myfunction(void) {return 1;}
}
class B: public A {
private: virtual int myfunction(void) {return 2;}
}
然後,如果我從myfunction
定義class B
刪除virtual
,這是否意味着,如果我有一個基於class B
class C
,我不能覆蓋myfunction
,因爲它會靜態編譯?
另外,我很困惑,當你在公共場合切換時會發生什麼,而在這裏是私人的。如果我將myfunction
中的class B
的定義更改爲公開(並且class A
中的那個保持私密),這是否是我不應該這樣做的嚴重錯誤?我認爲虛擬功能需要保持相同的類型,這是非法的,但請讓我們知道這是不對的。
謝謝!
不需要爲派生類方法顯式編寫「虛擬」關鍵字。你可以忽略它,但它是一個很好的風格。 – varnie 2009-11-05 11:11:49