虛擬與多形學習心得

1.父類別的指標可以指向子類別的物件。雖然如此,但在沒有經過類型轉換前,以父類別指標指向子類別物件並不能存取子類別新增的成員變成及函數。

2.虛擬函數是使用virtual關鍵字進行宣告的成員函數,當我們在類別宣告虛擬函數,目的是讓繼承的子類別可以覆寫此函數,以便建立動態連結(dynamic binding)的函數呼叫。)。虛擬函數的宣告只需要在父類別使用virtual宣告,子類別按一般成員函數宣告即可。

3.抽象類別是一種不能完全代表物件的類別。事實上,它不能用來建立物件,主要的目的是作為類別繼承的父類別,定義一些子類別的共同部分。

4.宣告抽象類別就是包含純虛擬函數的類別,而純虛擬函數是沒有程式區塊,也沒有實作的程式碼,並且用指定敘述設定成0。如:
virtual void show()=0;

5.多形和覆寫的差別在於多形不存在父類別函數的作用,而覆寫可能存在,因為覆寫必須在函數名稱、參數列等條件都相同下才是覆寫,否則會變成過載函數。
實際測試:虛擬函數的傳回值和子類別實作函數的傳回值必須一致,參數列也必須一致。那這樣多形和覆寫、過載的差別是什麼?

6.多形不需要針對不同資料型態分別建立類別,只需要繼承抽象類別來實作純虛擬函數,就可以處理不同的資料型態。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *