複製鏈接
請複製以下鏈接發送給好友

動態聯編

鎖定
動態聯編(dynamic binding)是一個編程術語,又叫動態綁定。
中文名
動態聯編
外文名
dynamic binding
別    名
動態綁定

目錄

動態聯編定義

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

動態聯編組成

動態聯編必須包括以下方面:
(1)成員函數必須聲明為virtual
(2)如果基類中聲明瞭為虛函數,則派生類中不必再聲明。

動態聯編調用方式

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

動態聯編舉例

#include <iostream>
#include <string>
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 <float>(60.40)); //修改橋的長度
    bridge.display(); //顯示橋的信息
    return;
}