課程
/后端開發
/C++
/C++遠征之多態篇
既然virtual用處這么多,那么我們在所有繼承的時候都采用虛繼承來防止浪費空間,所有的類都采用虛析構函數來防止內存泄漏,所有符合的成員函數都采用虛函數來實現多態。是不是全都這樣做最好呢?
2016-03-09
源自:C++遠征之多態篇 2-5
正在回答
肯定不是這樣的。
1、使用virtual會產生一個虛擬指針表,要維持這個表,便額外加大了系統的開銷。
2、也不是所有的成員函數都需要實現多態的,總有些函數實現的功能意義時固定的,比如說加減乘除
3、虛繼承無非是為了避免諸如菱形繼承的情況,在我們構建類圖的時候,就需要考慮到這些問題,如果能不用虛繼承,就不用咯。
綜上,應該是能不用就不用,C++就是以號稱節省資源,運行效率高的。如果在寫程序的時候,使得消耗過多的系統資源,便失去了這門語言高效的意義了。那還不如直接用一些新興的語言如GO,SCALA之類的了。
qq_渴望六維空間_0 提問者
舉報
本教程將帶領大家體會面向對象三大特性中的多態特性
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-03-10
肯定不是這樣的。
1、使用virtual會產生一個虛擬指針表,要維持這個表,便額外加大了系統的開銷。
2、也不是所有的成員函數都需要實現多態的,總有些函數實現的功能意義時固定的,比如說加減乘除
3、虛繼承無非是為了避免諸如菱形繼承的情況,在我們構建類圖的時候,就需要考慮到這些問題,如果能不用虛繼承,就不用咯。
綜上,應該是能不用就不用,C++就是以號稱節省資源,運行效率高的。如果在寫程序的時候,使得消耗過多的系統資源,便失去了這門語言高效的意義了。那還不如直接用一些新興的語言如GO,SCALA之類的了。