C 靜態聯編和動態聯編

2021-06-19 17:59:36 字數 1297 閱讀 1022

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

靜態聯編是指在編譯階段就將函式實現和函式呼叫關聯起來,因此靜態聯編也叫早繫結,在編譯階段就必須了解所有的函式或模組執行所需要檢測的資訊,它對函式的選擇是基於指向物件的指標(或者引用)的型別,c語言中,所有的聯編都是靜態聯編,據我所知道的,任何一種編譯器都支援靜態聯編(廢話)。

動態聯編是指在程式執行的時候才將函式實現和函式呼叫關聯,因此也叫執行時繫結或者晚繫結,動態聯編對函式的選擇不是基於指標或者引用,而是基於物件型別,不同的物件型別將做出不同的編譯結果。c++中一般情況下聯編也是靜態聯編,但是一旦涉及到多型和虛函式就必須要使用動態聯編了。下面將介紹一下多型。

多型:字面的含義是具有多種形式或形態。c++多型有兩種形式,動態多型和靜態多型;動態多型是指一般的多型,是通過類繼承和虛函式機制實現的多型;靜態多型是通過模板來實現,因為這種多型實在編譯時而非執行時,所以稱為靜態多型。

動態多型例子:

#include

#include

/** 

*shape

*/class cshape

virtual ~cshape(){}

virtual void draw() = 0;

};/**

*point

*/class cpoint : public cshape

~cpoint(){}

void draw()

};/**

*line

*/class cline : public cshape

~cline(){}

void draw()

};void main()

大家可以考慮一下它的輸出結果,如果實在不知道,那就麻煩你執行一下它吧!

順便在這裡也提供乙個靜態多型的例子:

在上面例子的基礎之上新增模板函式:

template

void drawshape(t* t)

修改main函式為如下:

void main()

在程式編譯main函式的時候,編譯器就已經指定了drawshape函式裡面的draw要呼叫那個實現了,這就是靜態多型,在編譯時就已經知道了要呼叫的函式。

全文完!

C 靜態聯編和動態聯編

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

靜態聯編和動態聯編

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

靜態聯編和動態聯編

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