动态联编

来源:互联网 发布:亚马逊美工岗位职责 编辑:程序博客网 时间:2024/05/21 17:11

编译程序在编译阶段并不能确切知道将要调用的函数,只有在程序运行时才能确定将要调用的函数,为此要确切知道该调用的函数,要求联编工作要在程序运行时进行,这种在程序运行时进行联编工作被称为动态联编。
动态联编必须包括以下方面:
成员函数必须声明为virtual
如果基类中声明了为虚函数,则派生类中不必再声明。
调用方式:
通过对象的指针或引用调用成员函数;或通过成员函数调用,反之就无法实现动态联编。


#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;}


0 0