聯(lián)編的概念 在C++中,聯(lián)編(binding)就是使一個計算機程序的不同部分彼此關聯(lián)的過程.在這個過程中對將每個函數(shù)調用分配內存地址,并且對外部訪問也分配正確的內存地址,根據(jù)進行聯(lián)編所處階段的不同,可以分為兩種不同的聯(lián)編方法:靜態(tài)聯(lián)編和動態(tài)聯(lián)編(滯后聯(lián)編).在編譯階段決定執(zhí)行哪個同名的被調用函數(shù),稱為靜態(tài)聯(lián)編.靜態(tài)聯(lián)編在編譯階段就必須了解所有的函數(shù)或模塊執(zhí)行所需要檢測的信息,它對函數(shù)的選擇是基于指向對象的指針(或者引用)的類型.反之在編碼階段不能決定執(zhí)行哪個同名的被調用函數(shù),只在執(zhí)行階段才能根據(jù)地要處理的對象類型來決定執(zhí)行哪個類的成員函數(shù),這稱為動態(tài)聯(lián)編.動態(tài)聯(lián)編對成員函數(shù)的選擇不是基于指針或引用,而是基于對象類型,針對不同的對象類型將作出不同的編譯結果.當涉及到多態(tài)性和虛函數(shù)時就應該使用動態(tài)聯(lián).動態(tài)聯(lián)編必須包括以下方面:成員函數(shù)必須申明為virtual如果基類中申明了為虛函數(shù),則派生類中不必再申明。調用方式:通過對象的指針或引用調用成員函數(shù);或通過成員函數(shù)調用 C++多態(tài)性機制多態(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;
}