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在point類中的area()函式前加了virtual,使其變成了虛函式,實現了動態聯編,呼叫物件r、c類中的area函式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
3.虛函式
1)在公有繼承方式下,可以通過基類物件指標或引用來呼叫基類的同名函式。
在靜態聯編中,如果用基類指標指向派生類物件,也無法去呼叫派生類的同名成員函式,
在動態聯編中,如果這同名函式是虛函式時,基類物件指標指向了派生類物件後,便可以呼叫派生類的同名函式
2)說明方法
virtual int a();
虛函式一定是成員函式(但不能是靜態成員函式)
虛函式定義在類體外時不加virtual
3)實現動態聯編的方法
通過物件指標或引用訪問虛函式
通過成員函式實現動態聯編
4)虛函式的繼承性
在基類中說明的虛函式,在派生類中函式說明完全相同的函式為虛函式,在派生類中可以加關鍵字virtual,也可以不加
4.虛析構函式
建構函式不能說明為虛函式
虛析構函式的作用在於系統將採用動態聯編呼叫析構函式,使析構更徹底
定義:virtual ~a()
5.純虛函式
1)定義:virtual int a () = 0;
2)純虛函式沒有函式體
3)純虛函式不能被呼叫,只有在派生類中被具體定義後才能被呼叫
6.抽象類
定義:包含乙個或多個純虛函式的類
抽象類不能用來定義物件,但是它可以定義物件指標或物件引用,使用它們便可以實現動態聯編
抽象類在類的層次結構中,作為頂層或最上面幾層,由它作為乙個類族的公共介面。反應該類族中各個類的共性
靜態聯編和動態聯編
聯編是指乙個電腦程式自身彼此關聯 使乙個 源程式經過編譯 連線,成為乙個可執行程式 的過程,在這個聯編過程中,需要確定程式中的操作呼叫 函式呼叫 與執行該操作 函式 的 段之間的對映關係,按照聯編所進行的階段不同,可分為靜態聯編和動態聯編。靜態聯編 呼叫函式和被調函式在程式編譯時,他們在記憶體中的位...
靜態聯編和動態聯編
聯編就是將模組或者函式合併在一起生成可執行 的處理過程,同時對每個模組或者函式呼叫分配記憶體位址,並且對外部訪問也分配正確的記憶體位址,它是電腦程式彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法 靜態聯編和動態聯編。靜態聯編是指在編譯階段就將函式實現和函式呼叫關聯起來,因此靜態聯...
靜態聯編和動態聯編
聯編就是將模組或者函式合併在一起生成可執行 的處理過程,同時對每個模組或者函式呼叫分配記憶體位址,並且對外部訪問也分配正確的記憶體位址,它是電腦程式彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法 靜態聯編和動態聯編。靜態聯編是指在編譯階段就將函式實現和函式呼叫關聯起來,因此靜態聯...