C++11新特性學習筆記—final和override關鍵字

一、final關鍵字

               爲什麼c++現在才提供final這個關鍵字?很奇怪。

             和Java一樣,c++中的final關鍵字是用來修飾一個函數,防止這個函數被子類重寫。

              

      二、override關鍵字

        這個關鍵字作用蠻大的。
在C++中,有父類A,子類B,父類中有虛函數x,子類B繼承x,如果在B中x函數之前不加virtual關鍵字,編譯器還是會默認爲我們添加的,雖然略寫了感覺方便,但是可讀性降級了,所以最好還是在子類中爲繼承來的函數之前添加上virtual關鍵字。當繼承結構比較長,比如A繼承B,B繼承C,C繼承自D這種,就很複雜了,有時候我們在爲子類寫函數的時候,代碼量大的時候,可能我們都不知道自己是不是在重載一個接口,還有如果是重載來的,那麼函數名稱確保沒有錯誤等等,這個時候就很讓人煩躁了!如何解決這個問題呢?比如,我們確認自己目前在子類中正在重寫一個來自父類的函數,那麼我們最好是用override關鍵字來修飾該函數,override修飾的函數表示這個函數一定是父類(祖先)中傳下來的,這樣就幫助我們進行了函數的名稱、參數的檢查,很方便阿!
         比如下面書中的例子:
          
                    加了overriade關鍵字後,很容易就發現函數名稱寫錯了,參數不對。
             所以,以後在子類中重寫父類函數的時候,一定加上virtual和override關鍵字(上面的圖忘記在子類中幾個函數前面加virual了,加了之後,效果一樣的)。
                     
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章