一、多態性的概念 多態性分為:靜態多態性和動態多態性 靜態多態性 在程序編譯時,系統就決定調用哪個函數,又稱為編譯時的多態性 函數重載、運算符重載 動態多態性 在程序運行過程中才動態地確定操作所針對的對象,又稱為運行時的多態性 動態多態性是通過虛函數來實現的 二、虛函數 在類的繼承層次結構中,在不同的層次中可以出現名字相同,參數個數和類型都相同而功能不同的函數,編譯系統按照同名成員的隱藏原則決定調用的對象 虛函數 在類的繼承層次結構中,在不同的層次中可以出現名字相同,參數個數和類型都相同而功能不同的函數,編譯系統按照同名成員的隱藏原則決定調用的對象 C++中的虛函數允許在派生類中重新定義與基類同名的函數,并且可以通過基類指針或引用來訪問基類和派生類中的同名函數 虛函數的使用方法 在基類中用virtual聲明成員函數為虛函數,就可以在派生類中重新定義此函數,為它賦予新的功能,并能方便地被調用 三、多態性的概念 多態性分為:靜態多態性和動態多態性 靜態多態性 在程序編譯時,系統就決定調用哪個函數,又稱為編譯時的多態性 函數重載、運算符重載 動態多態性 在程序運行過程中才動態地確定操作所針對的對象,又稱為運行時的多態性 動態多態性是通過虛函數來實現的 四、虛函數的使用方法 當一個成員函數被聲明為虛函數后,其派生類的同名函數都自動成為虛函數,因此在派生類中重新聲明該虛函數時,可以加virtual,也可以不加virtual 定義一個指向基類的指針,并使它指向同一類族中的某一對象,通過該指針變量調用此虛函數,此時調用的就是指針變量指向對象的同名函數 一個成員函數被聲明為虛函數后,在同一個類中就不能再定義一個非virtual的但與該虛函數具有相同參數和返回值的同名函數 虛函數的使用是通過動態關聯實現的 五、在什么情況下使用虛函數 首先看成員函數所在的類是否會作為基類,然后看成員函數在類的繼承后有無可能被更改功能,如果希望更改功能,一般應將它聲明為虛函數 如果成員函數在類被繼承后功能不需修改或派生類用不到該函數,則不要把它聲明成虛函數 應考慮對成員函數的調用是通過對象名還是通過基類指針或引用去訪問,如果是通過基類指針或引用去訪問的,應當聲明為虛函數
新聞熱點
疑難解答
圖片精選