靜態聯編和動態聯編

2022-07-20 12:27:09 字數 1915 閱讀 1406

1.聯編是指對於相同名字的若干個函式的選擇問題

2.例項

矩形類

double

area()

};class circle:public point//

圓類

double

area()

};void fun(point &p)

intmain()

//輸出

//area = 0

//area = 0

p是point類的物件,由於沒有虛函式,實行靜態聯編(在編譯時進行選擇),選擇的是point中的area函式

#include using

namespace

std;

const

double pi = 3.1415926

;class

point

double

area()

};class rectangle:public point//

矩形類

double

area()

};class circle:public point//

圓類

virtual

double

area()

};void fun(point &p)

intmain()

//輸出

//area = 34.32

//area = 78.5398

在point類中的area()函式前加了virtual,使其變成了虛函式,實現了動態聯編,呼叫物件r、c類中的area函式

3.虛函式

1)在公有繼承方式下,可以通過基類物件指標或引用來呼叫基類的同名函式。

在靜態聯編中,如果用基類指標指向派生類物件,也無法去呼叫派生類的同名成員函式,

在動態聯編中,如果這同名函式是虛函式時,基類物件指標指向了派生類物件後,便可以呼叫派生類的同名函式

2)說明方法

virtual int a();

虛函式一定是成員函式(但不能是靜態成員函式)

虛函式定義在類體外時不加virtual

3)實現動態聯編的方法

通過物件指標或引用訪問虛函式

通過成員函式實現動態聯編

4)虛函式的繼承性

在基類中說明的虛函式,在派生類中函式說明完全相同的函式為虛函式,在派生類中可以加關鍵字virtual,也可以不加

4.虛析構函式

建構函式不能說明為虛函式

虛析構函式的作用在於系統將採用動態聯編呼叫析構函式,使析構更徹底 

定義:virtual ~a()

5.純虛函式

1)定義:virtual int a () = 0;

2)純虛函式沒有函式體

3)純虛函式不能被呼叫,只有在派生類中被具體定義後才能被呼叫

6.抽象類

定義:包含乙個或多個純虛函式的類

抽象類不能用來定義物件,但是它可以定義物件指標或物件引用,使用它們便可以實現動態聯編

抽象類在類的層次結構中,作為頂層或最上面幾層,由它作為乙個類族的公共介面。反應該類族中各個類的共性

靜態聯編和動態聯編

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

靜態聯編和動態聯編

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

靜態聯編和動態聯編

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