動態聯編

動態聯編

編譯程式在編譯階段並不能確切知道將要調用的函式,只有在程式執行時才能確定將要調用的函式,為此要確切知道該調用的函式,要求聯編工作要在程式運行時進行,這種在程式運行時進行聯編工作被稱為動態聯編。在運行階段,才將函式的調用與對應的函式體進行連線的方式,又叫運行時聯編或晚捆綁。

基本內容

動態聯編又稱動態關聯

定義:

編譯程式在編譯階段並不能確切知道將要調用的函式,只有在程式運行時才能確定將要調用的函式,為此要確切知道該調用的函式,要求聯編工作要在程式運行時進行,這種在程式運行時進行聯編工作被稱為動態聯編。

動態聯編必須包括以下方面:

成員函式必須聲明為virtual

如果基類中聲明了為虛函式,則派生類中不必再聲明。

調用方式:

通過對象的指針或引用調用成員函式;或通過成員函式調用,反之就無法實現動態聯編。

例如:#include

#include

using namespace std;

class CBuilding

{

//定義建築類

string name; //定義名稱

public:

void set(string strName); //修改名稱

virtual void display() //顯示信息,這裡是內聯函式,而且聲明為虛函式

{

cout << "建築是" << name << "\n";

}

};//建築類定義完畢

void CBuilding::set(string strName)

{

//修改名稱方法的實現

name = strName;

}

class CBridge : public CBuilding

{

//通過繼承來定義橋類

float length; //定義長度

public:

void setLength(float l = 0.0){length = l;} //設定長度

void display()

{

CBuilding::display(); //調用基類方法顯示名稱

cout << "其長度是" << length << "米。\n"; //顯示長度信息

}

};//橋類定義完畢

void main()

{

CBuilding building; //創建建築對象

CBridge bridge; //創建橋對象

building.set("中國古代建築"); //設定名稱

building.display(); //顯示信息

bridge.set("中國趙州橋"); //設定橋的名稱

bridge.setLength(static_cast (60.40)); //修改橋的長度

bridge.display(); //顯示橋的信息

return;

}

相關詞條

相關搜尋

熱門詞條

聯絡我們