靜態聯編
在編譯時進行,又稱早期聯編。編譯時規定的位址不可以被後期改變,執行最開始的位址所在類的相應函式。
class
dad}
;class
son:
public dad};
void
output
(dad &d)
intmain()
輸出:
0
10
動態聯編
將基類和派生類中所有的同名函式定義為虛函式,呼叫時用物件指標/物件引用進行呼叫,可以實現呼叫相應物件的函式,無視其他限制。
class
dad}
;class
son:
public dad};
void
output
(dad &d)
intmain()
輸出:
1
0
ps.動態聯編的必要條件:
基類中宣告虛函式
派生類公有繼承
使用基類物件指標/物件引用呼叫虛函式
虛函式格式:virtual 原函式
靜態成員函式、類體外的普通函式、建構函式不能被定義為虛函式,但析構函式可以被定義為虛函式
基類的析構函式必須是虛函式
具有繼承性,只要在基類中宣告virtual
,則它的派生類中所有相同函式自動成為虛函式
純虛函式
純虛函式是一種特殊的虛函式,是一種沒有具體實現的虛函式,即沒有函式體,而是用=0
結尾。
virtual
double
area()
=0;
往往在基類中定義純虛函式,而派生類中必須要「實現純虛函式」,即提供有函式體的純虛函式
class
dad;
class
son:
public dad};
void
output
(dad &d)
intmain()
輸出:
666
純虛函式本身不能被呼叫,即基類中的純虛函式被打入冷宮,但凡提到它,呼叫的只能是派生類中的相應函式。強制實現了多型性。
抽象類含有至少乙個純虛函式的類稱為抽象類。抽象類不能用做定義物件,但可以定義物件指標/物件引用,如上面程式中output()
函式的引數。
靜態聯編與動態聯編
在c 中,多型性主要是通過函式過載實現的。過載函式是指程式中對同名函式進行呼叫時,編譯器會根據函式引數的型別和個數,決定該呼叫哪一段函式 來處理這個函式呼叫。這種把函式呼叫與適當的函式 相對應的動作,叫做聯編。聯編分為靜態聯編和動態聯編。在編譯階段決定執行哪個同名的被呼叫函式,稱為靜態聯編。在編譯階...
靜態聯編和動態聯編
聯編是指乙個電腦程式自身彼此關聯 使乙個 源程式經過編譯 連線,成為乙個可執行程式 的過程,在這個聯編過程中,需要確定程式中的操作呼叫 函式呼叫 與執行該操作 函式 的 段之間的對映關係,按照聯編所進行的階段不同,可分為靜態聯編和動態聯編。靜態聯編 呼叫函式和被調函式在程式編譯時,他們在記憶體中的位...
靜態聯編和動態聯編
聯編就是將模組或者函式合併在一起生成可執行 的處理過程,同時對每個模組或者函式呼叫分配記憶體位址,並且對外部訪問也分配正確的記憶體位址,它是電腦程式彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法 靜態聯編和動態聯編。靜態聯編是指在編譯階段就將函式實現和函式呼叫關聯起來,因此靜態聯...