學習第51天
C++
- 基類指針、派生類指針、
- 父類指針能夠調用父類的成員函數、父類指針不能夠調用子類的成員函數、
- 即調用父類又子類的同名同參函數的指針、類型必須是父類的類型、並且得在父類同名函數以前條件virtual聲明聲明成虛函數、
- 函數在父類中聲明成虛函數則全部的子類中均爲虛函數、
- 在子類函數聲明中添加override便表示子類將覆蓋父類的同名函數、僅限於父類在虛函數中使用、不然override不起做用、主要用於防止父類和子類的同名同參函數寫錯、
- 調用虛函數是動態綁定、同名同參函數、只有在運行時才知道調用了某個函數、而非編譯時、
- 虛函數必須寫定義、
- 虛函數、——virtual定義虛函數、
- override
- 編譯時從父類中查找同名同參的函數、
- 編譯器自動糾錯功能、
- 用在子類中、
- final
- 與override相對、
- 虛函數專用、用在父類而非子類、
- 父類在函數聲明中添加final則表示任未嘗試覆蓋該函數的操做均錯誤、
- 多態性、
- 只是針對虛函數、體如今繼承父類與子類之間子類重寫(從新定義)父類成員函數、同時聲明函數爲virtual函數、
- 純虛函數、
- 在基類中聲明的虛函數、可是沒有定義、要求任何子類都要定義該虛函數的本身實現方法、
- 在基類的原函數後面添加 =0; 便實現了純虛函數
- 純虛函數沒有函數體、只有一個函數聲明、
- 在類中定義了純虛函數就不能生成此類的對象、此類被成爲抽象類、
- 抽象類的目的是統一管理子類對象、當成基類來生成子類、
- 基類的析構函數通常寫成虛函數(虛析構函數)、
- 在子類繼承父類的函數中基類對派生類及其對象的操做只能影響到從基類繼承下來的成員、
- 把基類的函數定義爲虛函數就能夠用基類對非繼承成員進行操做、析構函數一樣、
- 激勵欸中析構函數的虛屬性也會被繼承給子類、這使子類的析構函數也變成了虛函數、
- 虛函數就是爲了獲取多態性、
- 類要作基類就必須將這個類的析構函數寫成virtual析構函數、普通類能夠不寫析構函數、
- 基類的析構函數是虛函數、就能保證delete基類指針可以找到正確的析構函數版本、
- 虛函數會增長內存開銷、只要類中定義了虛函數、編譯器便會給這個類添加虛函數表、表裏面存放的是虛函數指針、
歡迎關注本站公眾號,獲取更多信息