是不是所有的可能需要的情況都加上virtual更好呢?
既然virtual用處這么多,那么我們在所有繼承的時候都采用虛繼承來防止浪費空間,所有的類都采用虛析構(gòu)函數(shù)來防止內(nèi)存泄漏,所有符合的成員函數(shù)都采用虛函數(shù)來實現(xiàn)多態(tài)。是不是全都這樣做最好呢?
既然virtual用處這么多,那么我們在所有繼承的時候都采用虛繼承來防止浪費空間,所有的類都采用虛析構(gòu)函數(shù)來防止內(nèi)存泄漏,所有符合的成員函數(shù)都采用虛函數(shù)來實現(xiàn)多態(tài)。是不是全都這樣做最好呢?
2016-03-09
舉報
2016-03-10
肯定不是這樣的。
1、使用virtual會產(chǎn)生一個虛擬指針表,要維持這個表,便額外加大了系統(tǒng)的開銷。
2、也不是所有的成員函數(shù)都需要實現(xiàn)多態(tài)的,總有些函數(shù)實現(xiàn)的功能意義時固定的,比如說加減乘除
3、虛繼承無非是為了避免諸如菱形繼承的情況,在我們構(gòu)建類圖的時候,就需要考慮到這些問題,如果能不用虛繼承,就不用咯。
綜上,應(yīng)該是能不用就不用,C++就是以號稱節(jié)省資源,運行效率高的。如果在寫程序的時候,使得消耗過多的系統(tǒng)資源,便失去了這門語言高效的意義了。那還不如直接用一些新興的語言如GO,SCALA之類的了。