C++虚函数和纯虚函数的区别
1.虛函數和純虛函數可以定義在同一個類中,含有純虛函數的類被稱為抽象類,而只含有虛函數的類不能被稱為抽象類。
2.虛函數可以被直接使用,也可以被子類重載以后,以多態的形式調用,而純虛函數必須在子類中實現該函數才可以使用,因為純虛函數在基類有聲明而沒有定義。
3.虛函數和純虛函數都可以在子類中被重載,以多態的形式被調用。
4.虛函數和純虛函數通常存在于抽象基類之中,被繼承的子類重載,目的是提供一個統一的接口。
5.虛函數的定義形式:virtual{};純虛函數的定義形式:virtual? { } = 0;在虛函數和純虛函數的定義中不能有static標識符,原因很簡單,被static修飾的函數在編譯時要求前期綁定,然而虛函數卻是動態綁定,而且被兩者修飾的函數生命周期也不一樣。
虛函數充分體現了面向對象思想中的繼承和多態性這兩大特性,在C++語言里應用極廣。比如在微軟的MFC類庫中,你會發現很多函數都有virtual關鍵字,也就是說,它們都是虛函數。難怪有人甚至稱虛函數是C++語言的精髓。
定義純虛函數就是為了讓基類不可實例化,因為實例化這樣的抽象數據結構本身并沒有意義或者給出實現也沒有意義。
純虛函數只是一個接口,是個函數的聲明而已,它要留到子類里去實現。
虛函數在子類里面也可以不重載的;但純虛必須在子類去實現,這就像Java的接口一樣。通常我們把很多函數加上virtual,是一個好的習慣,雖然犧牲了一些性能,但是增加了面向對象的多態性,因為你很難預料到父類里面的這個函數不在子類里面不去修改它的實現
總結
以上是生活随笔為你收集整理的C++虚函数和纯虚函数的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 虚函数与纯虚函数
- 下一篇: C++的精髓——虚函数