靜態聯編和動態聯編

2021-09-21 01:38:07 字數 757 閱讀 9356

靜態聯編和動態聯編

1、聯編是指乙個程式模組、**之間互相關聯的過程。

2、靜態聯編(static binding),是程式的匹配、連線在編譯階段實現,也稱為早期匹配。

過載函式使用靜態聯編。(沒有加virtual

3、動態聯編是指程式聯編推遲到執行時進行,所以又稱為晚期聯編(遲繫結)。(加了virtual)

switch 語句和 if 語句是動態聯編的例子。

例項

#include

using namespace std;

class a

a(int a)

};class b : public a

b(int a, int b) : a(a)

};void main()

4、理論聯絡實際

在沒有加virtual之前

1、c++與c相同,是靜態編譯型語言

2、在編譯時,編譯器自動根據指標的型別判斷指向的是乙個什麼樣的物件;所以編譯器認為父類指標指向的是父類物件。

3、由於程式沒有執行,所以不可能知道父類指標指向的具體是父類物件還是子類物件

從程式安全的角度,編譯器假設父類指標只指向父類物件,因此編譯的結果為呼叫父類的成員函式。這種特性就是靜態聯編。

加上 virtual  動態聯編,根據實際的型別執行相應的函式(父類還是子類的函式)

此篇文章的前序:

靜態聯編和動態聯編

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

靜態聯編和動態聯編

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

靜態聯編和動態聯編

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