C 中虛函式的使用

2021-09-12 08:28:37 字數 611 閱讀 4588

c++中重要的特性:封裝、繼承和多型。其中多型體現在多個類之間的關係上,也是設計模式中常用的一種特性。

多型和繼承聯絡在一起,子類繼承父類的行為同時會改變父類的行為。在這其中虛函式起了重要的作用。

虛函式一般使用在什麼情況下呢?

如果我們只關注程式本省的行為,同時沒有繼承關係,那麼函式是否為虛函式根本無關緊要。只用在考慮到繼承時才有必要考慮這些問題。

也並不是所有的類都是為了繼承而設計的。

虛函式同時也需要一定的開銷的。當然這個開銷值得關注嗎?這就取決於具體應用。

虛函式和非虛函式的區別只有在特定的情況下才會體現出來:當使用乙個基類指標或引用乙個派生類物件才會使用到。

析構函式只在銷毀物件時才使用。銷毀乙個物件的唯一的方法就是使用delete。因此只用過使用指向基類的指標來刪除派生類的物件時,虛析構函式才有正真的意義。

如果乙個類的基類有乙個虛析構函式,那麼這個類本身也自動獲得乙個虛析構函式,所以完整的類繼承層次結構中有乙個虛析構函式就夠了。

虛函式也不總是適用:1.虛函式有時會帶來很大的消耗;2.虛函式不總是提供所需的行為;3.有時我們寫乙個類時,可能不考慮派上問題。

但是當我們刪除乙個表面上指向基類物件,實際卻是執行派生類物件指標,就需要析構函式。

C 中的虛函式 純虛函式

c 最重要的特性就是多型,而多型,就主要通過虛函式實現的。具體的實現過程是 基類中的函式定義為虛函式,派生類發生覆蓋 即函式名稱 引數列表 返回值型別完全相同 的情況下,派生類中的函式也會自動變成虛函式,不論加不加virtual關鍵字。此時,基類與子類物件中都會存在一張虛函式表 因為含有虛函式 具體...

C 虛函式的使用

這兩天看了c 虛函式的相關機制,有必要記錄下自己的心得體會。c 的虛函式機制主要依賴c 的指標和引用的靜態型別 編譯時確定的型別 和動態型別 執行時確定的型別 的不同來實現動態繫結的,也就是在執行時來確定基類指標和引用的型別,是本身基類型別還是其某個子類型別。這樣,就可以在動態時確定通過指標或者引用...

c 的虛函式使用

虛函式的使用 之前的 如下 include using namespace std class base 定義基類base void disp 定義成員函式 class base1 public base 定義公有派生類base1 void disp 定義同名函式 void main 結果如下 分析...