TC++PL第十二章 派生類

p278

多態性:從類Employee的函數中取得“正確的”行爲,而又不依賴於實際使用的到底是哪一種Employee(我怎麼覺得是依賴的?不是明確聲明瞭m是manager嗎?那調用的肯定就是manager的print()啊~~),這就是所謂的多態性。一個帶有虛函數的類型被稱爲是一個多態類型。要在C++裏取得多態性的行爲,被調用的函數就必須是虛函數,而對象則必須是通過指針或者引用去操作的。如果直接操作一個對象(而不是通過指針或引用),它的確切類型就已經爲編譯器所知,因此也就不需要運行時的多態性了。(不明白爲毛一定要運行時的多態性?)。


純虛函數:

對於類Shape,把虛函數聲明爲純虛函數會更好。用=0作爲初始式就使虛函數成爲“純虛的”:

virtual void rotate(int)=0; //純虛函數

如果一個類裏存在一個或者多個純虛函數,這個類就是抽象類。不能創建抽象類的對象!一個未在派生類裏定義的純虛函數仍舊還是一個純虛函數,這種情況也將使該派生類仍爲一個抽象類,所以該派生類依然不能創建對象。

抽象類的最重要用途就是提供一個界面,而又不暴露任何實現的細節。不暴露任何細節的理解是不是:因爲任何派生類都可以自己重新實現抽象類中的部分虛函數?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章