動態聯編和靜態聯編
一、靜態聯編
定義在編譯時所進行的這種聯編又稱靜態束定,在編譯時就解決了程式中的操作呼叫與執行該操作**間的關係。
注意:靜態聯編由可訪問屬性和預設值確定
二、動態聯編
定義編譯程式在編譯階段並不能確切知道將要呼叫的函式,只有在程式執行時才能確定將要呼叫的函式,為此要確切知道該呼叫的函式,要求聯編工作要在程式執行時進行,這種在程式執行時進行聯編工作被稱為動態聯編。動態聯編又稱動態關聯。
組成(1)成員函式必須宣告為virtual
(2)如果基類中宣告了為虛函式,則派生類中不必再宣告。
呼叫方式
通過物件的指標或引用呼叫成員函式;或通過成員函式呼叫,反之就無法實現動態聯編。
如下**:
執行結果如下:
原因:首先,建立base物件時,先建立base中的隱藏父物件object,op指標是object型別的指標,op->fun()時,靜態聯編,確定可訪問屬性(public),編譯可以通過,預設值為10,在我們執行程式調動的時候,是動態聯編,通過查詢base中的虛表指標(指向base的虛表),動態呼叫base中的fun函式,但預設值為10,不是20.所以把10給了a。
動態聯編和靜態聯編
聯編概念 聯編是指電腦程式自身彼此關聯的過程。通常指把乙個被呼叫的函式的 連線到要執行的程式的過程,實際上就是將乙個識別符號與乙個儲存位址聯絡起來的過程。簡單的說就是將帶呼叫程式的函式的 連線到該程式上。靜態聯編 動態聯編 在編譯階段並不知道確切要呼叫什麼函式,只有在程式執行時才能確定要呼叫的函式。...
c 動態聯編和靜態聯編
將乙個呼叫函式者聯結上正確的被呼叫函式,這過程叫做函式聯編。c 中的聯編分兩種,分為靜態聯編和動態聯編。為加virtual時是靜態聯編 加入virtual是動態聯編。只有在使用指標或者引用時,才能實現在執行時的動態聯編。include include using namespace std clas...
C 中的動態聯編和靜態聯編
通常來說聯編就是將模組或者函式合併在一起生成可執行 的處理過程,同時對每個模組或者函式呼叫分配記憶體位址,並且對外部訪問也分配正確的記憶體位址,它是電腦程式彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法 靜態聯編和動態聯編。靜態聯編是指在編譯階段就將函式實現和函式呼叫關聯起來,因...