首先,聯編是指乙個電腦程式的不同部分彼此關聯的過程。
靜態聯編是指聯編工作在編譯階段完成的,這種聯編過程是在程式執行之前完成的,又稱為早期聯編。要實現靜態聯編,在編譯階段就必須確定程式中的操作呼叫(如函式呼叫)與執行該操作**間的關係,確定這種關係稱為束定,在編譯時的束定稱為靜態束定。靜態聯編對函式的選擇是基於指向物件的指標或者引用的型別。其優點是效率高,但靈活性差。
動態聯編是指聯編在程式執行時動態地進行,根據當時的情況來確定呼叫哪個同名函式,實際上是在執行時虛函式的實現。這種聯編又稱為晚期聯編,或動態束定。動態聯編對成員函式的選擇是基於物件的型別,針對不同的物件型別將做出不同的編譯結果。c++中一般情況下的聯編是靜態聯編,但是當涉及到多型性和虛函式時應該使用動態聯編。動態聯編的優點是靈活性強,但效率低。動態聯編規定,只能通過指向基類的指標或基類物件的引用來呼叫虛函式,其格式為: 指向基類的指標變數名- >虛函式名(實參表)或 基類物件的引用名. 虛函式名(實參表)
實現動態聯編需要同時滿足以下三個條件:
①必須把動態聯編的行為定義為類的虛函式。
②類之間應滿足子型別關係,通常表現為乙個類從另乙個類公有派生而來。
③必須先使用基類指標指向子型別的物件,然後直接或者間接使用基類指標呼叫虛函式。
靜態聯編與動態聯編
在c 中,多型性主要是通過函式過載實現的。過載函式是指程式中對同名函式進行呼叫時,編譯器會根據函式引數的型別和個數,決定該呼叫哪一段函式 來處理這個函式呼叫。這種把函式呼叫與適當的函式 相對應的動作,叫做聯編。聯編分為靜態聯編和動態聯編。在編譯階段決定執行哪個同名的被呼叫函式,稱為靜態聯編。在編譯階...
動態聯編與靜態聯編
include using namespace std class base 輸出為 f1 of base destructor base f1 of derive destructor base 說明 只要將基類的函式設定為虛函式,那麼所有覆蓋它的子類的函式也都是虛函式,而不需要再使用virtua...
c 動態聯編與靜態聯編
摘要 本文闡述了靜態聯編和動態聯編的概念和區別,通過具體例項分析了實現動態聯編的條件,指出了虛函式是實現動態聯編的基礎。在c 中,聯編是指乙個電腦程式的不同部分彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法 靜態聯編和動態聯編。1.靜態聯編 靜態聯編是指聯編工作在編譯階段完成的,...