c++中的虛函式是實現執行多型的重要工具。關鍵字為virtual。
下面程式中定義了基類base和派生類deriv,派生類中有與基類中的同名函式print().如果定義乙個基類指標,但是將其指向派生類物件。那麼將指標的型別,呼叫基類中的print()函式。
#include
using namespace std;
class base };
class deriv : public base };
intmain()
輸出為base!!
下面程式中,定義了基類base和派生類deriv1和deriv2,不過在基類中用virtual關鍵字對print函式進行了修飾,使之成為了虛函式,只要在基類中新增了virtual,子類中的同名函式自然也就是虛函式了。
#include
using namespace std;
class base };
class deriv1 : public base };
class deriv2 : public base };
intmain()
輸出:
deriv1!!
deriv2!!
同樣是果定義乙個基類指標,但是將其指向派生類物件,由於是虛函式,將在程式執行時,根據指向的物件,分別呼叫子類中的print()函式。
在基類中用virtual關鍵字修飾函式,並且申明其= 0。這就定義了純虛函式。包含純虛函式的類稱為抽象類,抽象類沒有具體的物件。因此,下面的程式實際上在編譯的時候是報錯的,error: invalid new-expression of abstract class type 『base』
class base
;int
main()
在子類中應當對純虛函式進行具體的實現。如果在子類中,沒有對純虛函式的具體實現,相當於子類直接將純虛函式繼承過來,那麼子類還是乙個抽象類,依舊不能new出物件。
class base
;class deriv : public base };
intmain()
```當子類成員函式的申明和實現分開時,可以在純虛函式申明之後加override關鍵字,強制保證純虛函式的實現。
```class base
;class deriv : public base
;void deriv:
:print()
intmain()
```
虛函式與純虛函式
1 基本形式 virtual returntype function 1 虛函式宣告 virtual returntype function 2 0 純虛函式宣告 先講示例吧,再總結結論。2 示例 classanimail 這段 的輸出結果是什麼呢?起初我認為是 animail function 1...
虛函式與純虛函式
參考 虛函式 比如 virtual void function1 virtual關鍵字修飾的 成員函式 就是虛函式。把基類的成員函式 設為virtual,其 派生類的相應的函式也會自動變為虛函式。指向 基類的指標在操作它的 多型類物件時,會根據不同的類物件,呼叫其相應的函式,這個函式就是虛函式。純虛...
虛函式與純虛函式
1 基本形式 virtual returntype function 1 虛函式宣告 virtual returntype function 2 0 純虛函式宣告 先講示例吧,再總結結論。2 示例 classanimail 這段 的輸出結果是什麼呢?起初我認為是 animail function 1...