我(希望)已經理解了私人虛擬功能的目的,但我還沒有理解爲什麼我應該有一個私人的純粹的虛擬功能! 我的意思是,我必須在所有派生類中定義這個函數,但這樣所有對這個虛擬純的調用將是對派生類中定義的調用的調用。私人純虛擬功能的目的是什麼?
假設我們有:
class Base{
public:
void foo(){ bar(); }
private:
virtual void bar() =0 {/*something*/}
};
派生類基地必須定義欄(或有它的純虛擬的,但忘了這一個時刻)。 因爲Base :: bar是私有的,所以它不能被派生類使用。 由於Base是抽象的,我不能創建Base對象,因此我只能在派生類上調用foo,但這意味着Base :: bar永遠不會被調用! 當然,我可以定義富:
void Base::foo(){
bar();
Base::bar();
}
但是爲什麼?用bar的主體定義一個非虛擬的私有函數會更好(並用它替換Base :: bar),並使純虛擬的主體爲空?
如果是這樣,爲什麼我應該有酒吧私人(而不是保護)?我試圖找到一個在互聯網上的解決方案,我知道有像職位 - >C++: Private virtual functions vs. pure virtual functions,但他們幫助理解私人虛擬功能,而不是私人PURE虛擬功能。如果我錯了,請原諒我!
'virtual void bar()= 0 {/ * something * /}'? – ChiefTwoPencils 2014-09-01 00:03:02
您不必爲純虛函數提供定義,如果這就是您要求的。 – 2014-09-01 00:08:05
@ T.C。我認爲你刪除了我正在迴應的評論。 – 2014-09-01 01:15:03