C++虛函數和純虛函數


在開發項目中,本身對虛函數和純虛函數的理解不到位,在此特別作一篇博客。

                                                2018-08-08函數


1.純虛函數spa

  百度百科:純虛函數是一種特殊的虛函數,在許多狀況下,在基類中不能對虛函數給出有意義的實現,而把它聲明爲純虛函數,它的實現留給基類的派生類去作。指針

  純虛函數格式:對象

class <類名>
{
        virtual <類型><函數名>(<參數表>)=0;
         ...
}        

 引入緣由:blog

    1)爲了方便使用多態特性,經常須要在基類中定義虛函數開發

    2)在不少狀況下,基類自己生成對象是不合情理的。例如:動物做爲一個基類能夠派生出老虎、孔雀等子類,但動物自己生成對象明顯不合常理。博客

2.虛函數編譯

   百度百科:在某基類中聲明爲virtual並在一個或多個派生類中被從新定義的成員函數class

  定義格式百度

virtual 返回類型   函數名(參數列表) {函數體}

  指向基類的指針在操做它的多態類對象時,會根據不一樣的類對象,調用相應的函數,這個函數就是虛函數。

區別:

  純虛函數是虛函數的一個子集,用於抽象類,含有純虛函數的類就是抽象類,它不能生成對象。

3.virtual在函數中的使用限制

  1)普通函數不能是虛函數,也就是說這個函數必須是某一個類的成員函數,不能夠是一個全局函數,不然會致使編譯錯誤。

   2)靜態成員函數不能是虛函數 static成員函數是和類同生共處,他不屬於任何對象,使用virtual也將致使錯誤。

   3) 構造函數不能是虛函數,不然會出現編譯錯誤。

相關文章
相關標籤/搜索