靜態 動態聯編

2021-10-07 19:17:17 字數 1392 閱讀 7395

靜態聯編

在編譯時進行,又稱早期聯編。編譯時規定的位址不可以被後期改變,執行最開始的位址所在類的相應函式。

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

靜態聯編和動態聯編

聯編是指乙個電腦程式自身彼此關聯 使乙個 源程式經過編譯 連線,成為乙個可執行程式 的過程,在這個聯編過程中,需要確定程式中的操作呼叫 函式呼叫 與執行該操作 函式 的 段之間的對映關係,按照聯編所進行的階段不同,可分為靜態聯編和動態聯編。靜態聯編 呼叫函式和被調函式在程式編譯時,他們在記憶體中的位...

靜態聯編和動態聯編

聯編就是將模組或者函式合併在一起生成可執行 的處理過程,同時對每個模組或者函式呼叫分配記憶體位址,並且對外部訪問也分配正確的記憶體位址,它是電腦程式彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法 靜態聯編和動態聯編。靜態聯編是指在編譯階段就將函式實現和函式呼叫關聯起來,因此靜態聯...