對於虛函式的真切的理解

2021-05-25 21:56:48 字數 505 閱讀 4420

感謝這位哥們的總結:

簡單地說,那些被virtual關鍵字修飾的成員函式,就是虛函式。虛函式的作用,用專業術語來解釋就是實現多型性(polymorphism),多型性是將介面與實現進行分離;用形象的語言來解釋就是實現以共同的方法,但因個體差異而採用不同的策略。下面來看一段簡單的**

class a

執行一下看看結果,喲呵,驀然回首,結果卻是兩個this is a。問題來了,p2明明指向的是class b的物件但卻是呼叫的class a的print()函式,這不是我們所期望的結果,那麼解決這個問題就需要用到虛函式

class a{

public:

virtual void print(){ cout<<」this is a」《指向基類的指標在操作它的多型類物件時,會根據不同的類物件,呼叫其相應的函式。它虛就虛在所謂「推遲聯編」或者「動態聯編」上,乙個類函式的呼叫並不是在編譯時刻被確定的,而是在執行時刻被確定的。由於編寫**的時候並不能確定被呼叫的是基類的函式還是哪個派生類的函式,所以被成為「虛」函式。

對於虛析構函式的理解

首先,對於虛析構函式,那就得說下建構函式和析構函式了。建構函式 進行初始化成員變數的函式。析構函式 在物件生命週期結束的時候,完成資源的 和清理。如果我們在設計乙個類的時候,沒有顯示宣告定義建構函式,析構函式,則編譯器會自動生成。虛析構函式 只有當乙個類被定義為基類的時候,才會把析構函式寫成虛析構函...

虛函式的理解

includeusing namespace std class a virtual a virtual void print class b public a b void print int main 之前對虛函式一直一知半解,現在把總結的內容記錄下來。c 的物件導向的乙個特徵就是多型,即一切用...

虛函式中「虛」的理解

1 首先回顧一下虛函式的概念 虛函式 不代表一定需要子類去實現,而是可以通過基類的指標呼叫子類的此函式。純虛函式 一定需要子類去實現它,它定義的僅僅是一組行為,擁有純虛函式的類即為抽象類,只能當做基類,無法例項化。2 為什麼叫 虛 函式呢 正是這個函式呼叫的不可 性,而這種不可 性即函式的呼叫在編譯...