c++动态联编和静态联编

来源:互联网 发布:音画同步软件 编辑:程序博客网 时间:2024/05/16 09:39

将一个调用函数者联结上正确的被调用函数,这过程叫做函数联编。c++中的联编分两种,分为静态联编和动态联编。
为加virtual时是静态联编;加入virtual是动态联编。只有在使用指针或者引用时,才能实现在运行时的动态联编。

#include<iostream>#include<stdlib.h>using namespace std;class poser{public:    virtual void beast()const{ cout << "一般选手一拳的力量为260磅" << endl; }//说明为虚函数,指针指向哪个对象,就相应调用哪个对象的函数。protected:    int age;};class ali :public poser{public:     void beast()const{ cout << "阿里一拳的力量为420磅" << endl; }};class lewis :public poser{public:    void beast()const{ cout << "刘易斯一拳的力量为480磅" << endl; }};class tyson :public poser{public:    void beast()const{ cout << "泰森一拳的力量为500磅" << endl; }};class holy :public poser{public:    void beast()const{ cout << "霍利一拳的力量为350磅" << endl; }};void main(){    //poser*a[5];    poser*p;    int choice, i;    for (i = 0; i < 5; i++)    {        cout << "(1)阿里(2)刘易斯(3)泰森(4)霍利" << endl;        cin >> choice;        switch (choice)        {        case 1:p = new ali; break;        case 2:p = new lewis; break;        case 3:p = new tyson; break;        case 4:p = new holy; break;        default:p = new poser; break;        }        //a[i] = p;        //a[i]->beast();        p->beast();    }    system("pause");}

总结:
在继承中,只有当使用指针或者引用的方式来调用虚函数时,虚函数才能发挥多态性的作用。
只有被说明为虚函数的那个成员函数才具有多态性。

0 0