靜態聯編與動態聯編
聯編: 程式自身彼此關聯的過程,確定程式中的操作呼叫與執行該操作的**間的關係
。靜態聯編(靜態束定)
聯編工作出現在編譯階段,用物件名或者類名來限定要呼叫的函式。
動態聯編
聯編工作在程式執行時執行,在程式執行時才確定將要呼叫的函式。
虛函式:
虛函式是動態聯編的基礎。
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 中,多型性主要是通過函式過載實現的。過載函式是指程式中對同名函式進行呼叫時,編譯器會根據函式引數的型別和個數,決定該呼叫哪一段函式 來處理這個函式呼叫。這種把函式呼叫與適當的函式 相對應的動作,叫做聯編。聯編分為靜態聯編和動態聯編。在編譯階段決定執行哪個同名的被呼叫函式,稱為靜態聯編。在編譯階...