欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

虛函數與純虛函數(C++與Java虛函數的區(qū)別)的深入分析

 更新時間:2013年06月04日 11:12:03   作者:  
本篇文章是對虛函數與純虛函數進行了詳細的分析介紹,需要的朋友參考下

c++
虛函數
1.定義:在某基類中聲明為 virtual 并在一個或多個派生類中被重新定 義的成員函數 [1]
2.語法:virtual 函數返回類型 函數名(參數表) { 函數體 }
3.用途:實現多態(tài)性,通過指向派生類的基類指針,訪問派生類中同名覆蓋成員函數,也就是允許子類
override父類同名方法。
虛函數的作用是實現動態(tài)聯編,也就是在程序的運行階段動態(tài)地選擇合適的成員函數,在定義了虛函數后,可以在基類的派生類中對虛函數重新定義,在派生類中重新定義的函數應與虛函數具有相同的形參個數和形參類型(也就是完全相同的方法,不能只是函數名相同。)。以實現統(tǒng)一的接口,不同的定義過程。如果在派生類中沒有對虛函數重新定義,則它繼承其基類的虛函數。

當程序發(fā)現虛函數名前的關鍵字virtual后,會自動將其作為動態(tài)聯編處理,即在程序運行時動態(tài)地選擇合適的成員函數。虛函數是C++多態(tài)的一種表現。動態(tài)聯編規(guī)定,只能通過指向基類的指針或基類對象的引用來調用虛函數,其格式:
1.指向基類的指針變量名->虛函數名(實參表)
2.基類對象的引用名. 虛函數名(實參表)
使用虛函數,我們可以靈活的進行動態(tài)綁定,當然是以一定的開銷為代價。如果父類的函數(方法)根本沒有必要或者無法實現,完全要依賴子類去實現的話,可以把此函數(方法)設為virtual 函數名=0 ,例如:virtual void fun() = 0,我們把這樣的函數(方法)稱為純虛函數。如果一個類包含了純虛函數,稱此類為抽象類。
總結:如果一個子類想要重寫父類的方法,那么父類的這個成員方法必須是virtual的,也就是這個方法必須是虛函數。

java
在java中,所有方法默認就是虛擬的,只要方法不是聲明為final類型的,那么肯定就是虛函數,不用為方法顯示聲明為virtual。在<core java2 :volum I>中提到:"In Java, you do not need to declare a method as virtual. Dynamic binding is the default behavior. If you do not want a method to be virtual, you tag it as final"。所以我們發(fā)現,在java中,子類可以重寫(override)父類的方法,而父類沒有聲明virtual。

相關文章

  • 基于C++ list中erase與remove函數的使用詳解

    基于C++ list中erase與remove函數的使用詳解

    本篇文章是對C++ list中erase與remove函數的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • Qt 數據庫QSqlDatabase使用示例

    Qt 數據庫QSqlDatabase使用示例

    本文主要介紹了Qt數據庫QSqlDatabase使用示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-12-12
  • C++填坑的重寫,重載和隱藏的詳解

    C++填坑的重寫,重載和隱藏的詳解

    這篇文章主要介紹了C++中重載、重寫(覆蓋)和隱藏的區(qū)別,是C++面向對象程序設計非常重要的概念,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09
  • 解決C語言輸入單個字符屏蔽回車符的問題

    解決C語言輸入單個字符屏蔽回車符的問題

    這篇文章主要介紹了解決C語言輸入單個字符屏蔽回車符的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • C語言指針入門學習面面觀

    C語言指針入門學習面面觀

    這篇文章主要介紹了C語言指針的一些基礎知識,指針可以說是C語言入門學習中的頭等大事,文中從數組和函數等多方面剖析C中指針的作用,需要的朋友可以參考下
    2016-02-02
  • C語言詳細講解#error與#line如何使用

    C語言詳細講解#error與#line如何使用

    這篇文章主要介紹了C語言中#error與#line如何使用,#error與#line雖然在語言里面用的比較少,但是還是有必要了解一下
    2022-04-04
  • 手把手帶你搞懂C語言指針

    手把手帶你搞懂C語言指針

    這篇文章主要介紹了C語言的指針,本文給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下,希望能給你帶來幫助
    2021-08-08
  • C++常量詳解一(常量指針與常量引用的初始化)

    C++常量詳解一(常量指針與常量引用的初始化)

    這篇文章主要介紹了C++常量詳解一(常量指針與常量引用的初始化),需要的朋友可以參考下
    2017-06-06
  • OpenGL實現不規(guī)則區(qū)域填充算法

    OpenGL實現不規(guī)則區(qū)域填充算法

    這篇文章主要為大家詳細介紹了OpenGL實現不規(guī)則區(qū)域填充算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 利用C語言實現任務調度的示例代碼

    利用C語言實現任務調度的示例代碼

    這篇文章主要為大家詳細介紹了如何利用純C語言實現任務調度(可用于STM32、C51等單片機),文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-04-04

最新評論