虛函式,靜態聯編與動態聯編(讀書筆記)

2021-04-02 19:37:25 字數 851 閱讀 5169

靜態聯編與動態聯編

聯編:    程式自身彼此關聯的過程,確定程式中的操作呼叫與執行該操作的**間的關係

。靜態聯編(靜態束定)

聯編工作出現在編譯階段,用物件名或者類名來限定要呼叫的函式。

動態聯編

聯編工作在程式執行時執行,在程式執行時才確定將要呼叫的函式。

虛函式:

虛函式是動態聯編的基礎。

1, 是非靜態的成員函式。

2, 在類的宣告中,在函式原型之前寫virtual。

3, virtual 只用來說明類宣告中的原型,不能用在函式實現時。

4, 具有繼承性,基類中宣告了虛函式,派生類中無論是否說明,同原型函式都自動為虛函式。

5, 本質:不是過載宣告而是覆蓋。(因為其不屬於函式簽名部分)

6, 呼叫方式:通過基類指標或引用,執行時會 根據指標指向的物件的類,決定呼叫哪個函式。

虛析構函式:   

為了保正析構函式能夠被正確的呼叫,因此析構函式一般都被宣告為虛函式(除非此類不會被繼承),我們稱其為虛析構函式。

如:class base

};class derived };

int main()

output:

derived destructor

base destructor

我以前好像做過這樣的筆記,現在卻不是很清楚了,呵呵。筆記如下:

用多型性處理動態分配的類層次結構中的物件時存在乙個問題。

如果delete運算子用於指向派生類物件的基類指標,而程式中又顯示地呼叫該運算子刪除每乙個物件,

那麼,不管基類指標所指向的物件是何種型別,也忽略每乙個類的析構函式名的不相同,系統都會為這些物件呼叫基類的析構函式。

虛函式 1 靜態聯編與動態聯編,引入虛函式

在實際開發工作中,為提高 的重用性,編寫通用的功能模組,往往需要設計處理幾種不同物件的通用程式,如示例2.1所示。示例清單2.1 include stdio.h include stdlib.h 定義函式指標型別displayinteger,指向返回值為void,引數列表為 const int 的函...

靜態聯編(函式過載)和動態聯編(虛函式)

一 靜態聯編 定義 由於函式過載,編譯器必須檢視函式引數以及函式名就能確定使用哪個函式 這種c c 編譯器可以在編譯過程中完成的聯編,被稱為靜態聯編 函式過載 在同一作用域中,可以有一組具有相同函式名,不同引數列表的函式,這組函式被稱為過載函式 二 動態聯編 定義 使用哪個函式是不能在編譯時確定的,...

靜態聯編與動態聯編

在c 中,多型性主要是通過函式過載實現的。過載函式是指程式中對同名函式進行呼叫時,編譯器會根據函式引數的型別和個數,決定該呼叫哪一段函式 來處理這個函式呼叫。這種把函式呼叫與適當的函式 相對應的動作,叫做聯編。聯編分為靜態聯編和動態聯編。在編譯階段決定執行哪個同名的被呼叫函式,稱為靜態聯編。在編譯階...