C 學習筆記之虛函式

2021-08-05 23:41:46 字數 455 閱讀 4198

虛函式即在父類中成員函式錢加上virtual關鍵字,使得該成員函式具有動態鏈結屬性;因此函式具有了多型性;

那麼什麼是動態鏈結呢?

即程式在編譯階段不能確切知道將要呼叫的函式,只有在程式執行時才能確定將要呼叫的函式,要確切的知道呼叫的函式,要求聯編工作要在程式執行時進行,這種程式執行時進行的聯編稱之為動態聯編。

舉個例子:

#include

using namespace std;

class a

void printf()

};class b :public a

void printf()

};int main()

執行後,輸出a b fa fa;

說明當a類中的成員函式printf沒有新增virtual時,該成員函式為靜態聯編,在程式編譯時就確定了物件和指標的關係,所以賦值語句將b的位址值付給指向a的指標是無效。

C 學習筆記之虛函式

1.聯編是電腦程式彼此關聯的過程,這個過程需要確定函式呼叫和執行函式呼叫的 之間的對映關係,按照聯編的不同階段,可以分為靜態聯編和動態聯編 2.靜態聯編 就是在程式執行之間執行的早期聯編,那麼在程式執行時就會按照靜態聯編的結果進行執行,這也就是為什麼一直執行的時父類的func,也就是說如果父類和子類...

C 學習筆記 虛函式

虛函式主要用於c 中的多型特性,對於類的繼承而言,如果用父類的指標指向子類的的物件,當用該指標操作子類物件時,該指標只能操作父類中的函式,而對於子類中特有的和過載的方法,用該指標將無法使用。案例 class base class derive public base void show 派生類獨有的...

C 學習之 虛函式

靜態聯編 運算子過載 過載函式是通過 名字壓延 方法來實現。即在編譯時將函式名和引數結合起來創造乙個新的函式名,用新的名字替換原有名字。執行時多型性虛函式是在類定義中的函式原型宣告前加乙個關鍵字virtual。在派生類中重新定義時,它的函式原型 包括返回型別,函式名,引數個數和引數型別 必須與基類中...