聯(lián)編的概念 在C++中,聯(lián)編(binding)就是使一個(gè)計(jì)算機(jī)程序的不同部分彼此關(guān)聯(lián)的過程.在這個(gè)過程中對將每個(gè)函數(shù)調(diào)用分配內(nèi)存地址,并且對外部訪問也分配正確的內(nèi)存地址,根據(jù)進(jìn)行聯(lián)編所處階段的不同,可以分為兩種不同的聯(lián)編方法:靜態(tài)聯(lián)編和動(dòng)態(tài)聯(lián)編(滯后聯(lián)編).在編譯階段決定執(zhí)行哪個(gè)同名的被調(diào)用函數(shù),稱為靜態(tài)聯(lián)編.靜態(tài)聯(lián)編在編譯階段就必須了解所有的函數(shù)或模塊執(zhí)行所需要檢測的信息,它對函數(shù)的選擇是基于指向?qū)ο蟮闹羔?或者引用)的類型.反之在編碼階段不能決定執(zhí)行哪個(gè)同名的被調(diào)用函數(shù),只在執(zhí)行階段才能根據(jù)地要處理的對象類型來決定執(zhí)行哪個(gè)類的成員函數(shù),這稱為動(dòng)態(tài)聯(lián)編.動(dòng)態(tài)聯(lián)編對成員函數(shù)的選擇不是基于指針或引用,而是基于對象類型,針對不同的對象類型將作出不同的編譯結(jié)果.當(dāng)涉及到多態(tài)性和虛函數(shù)時(shí)就應(yīng)該使用動(dòng)態(tài)聯(lián).動(dòng)態(tài)聯(lián)編必須包括以下方面:成員函數(shù)必須申明為virtual如果基類中申明了為虛函數(shù),則派生類中不必再申明。調(diào)用方式:通過對象的指針或引用調(diào)用成員函數(shù);或通過成員函數(shù)調(diào)用 C++多態(tài)性機(jī)制多態(tài)性在C++里面具體表現(xiàn)為:通過基類指針訪問派生類的函數(shù)和方法.
代碼如下:
#include <iostream>
#include <typeinfo>
using namespace std;
class A
{
public:
virtual void fun(void)
{
cout << "This is class A! " <<endl;
}
};
class B : public A
{
public:
void fun(void)
{
cout << "This is class B! " <<endl;
}
};
int main(void)
{
A aa,*p;
B bb;
p=&bb;
p-> fun();
p=&aa;
p-> fun();
return 0;
}