靜態聯編和動態聯編
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 動態聯編,根據實際的型別執行相應的函式(父類還是子類的函式)
此篇文章的前序:
靜態聯編和動態聯編
聯編是指乙個電腦程式自身彼此關聯 使乙個 源程式經過編譯 連線,成為乙個可執行程式 的過程,在這個聯編過程中,需要確定程式中的操作呼叫 函式呼叫 與執行該操作 函式 的 段之間的對映關係,按照聯編所進行的階段不同,可分為靜態聯編和動態聯編。靜態聯編 呼叫函式和被調函式在程式編譯時,他們在記憶體中的位...
靜態聯編和動態聯編
聯編就是將模組或者函式合併在一起生成可執行 的處理過程,同時對每個模組或者函式呼叫分配記憶體位址,並且對外部訪問也分配正確的記憶體位址,它是電腦程式彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法 靜態聯編和動態聯編。靜態聯編是指在編譯階段就將函式實現和函式呼叫關聯起來,因此靜態聯...
靜態聯編和動態聯編
聯編就是將模組或者函式合併在一起生成可執行 的處理過程,同時對每個模組或者函式呼叫分配記憶體位址,並且對外部訪問也分配正確的記憶體位址,它是電腦程式彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法 靜態聯編和動態聯編。靜態聯編是指在編譯階段就將函式實現和函式呼叫關聯起來,因此靜態聯...