• 动态联编和虚函数的简单应用


    //动态联编和虚函数的简单应用
    #include <iostream>
    using namespace std;

    class Base
    {
    public:
    #if 1 //if 1则fun()为虚函数
    virtual
    #endif
    void fun()//成员函数
    {
    cout
    <<"in base class"<<endl;
    }

    };

    //继承于基类的子类
    class subClass:public Base{
    public:
    void fun()//和基类中的fun函数形参,返回类型都一样
    {
    cout
    <<"in Subclass"<<endl;
    }
    };

    class subClass2:public Base{
    public:
    void fun()
    {
    cout
    <<"in Subclass2!"<<endl;
    }
    };

    //普通函数
    //形参为基类的引用
    //其实参也可以是基类的派生类
    void test(Base &b)
    {
    b.fun();
    }

    int main()
    {
    //定义3个类对象
    Base bc;
    subClass sc;
    subClass2 sc2;

    cout
    <<"Call test(bc)"<<endl;
    test(bc);
    cout
    <<"Call test(sc)"<<endl;
    test(sc);
    //形参为base的派生类,fun函数基类和派生类中都有.
    //调用哪个fun成员函数取决于基类中的fun是不是虚函数
    //定义为virtual的函数是基类期待派生类重新定义的
    cout<<"Call test(sc2)"<<endl;
    test(sc2);

    return 0;
    }



    Base中的fun没有定义为虚函数,运行结果如下:


    Base中的fun定义为虚函数,运行结果如下:

  • 相关阅读:
    ACM-ICPC ShangHai 2014
    DEBUG感想
    WireShark 使用日记
    C++ 备忘录
    BZOJ 1022 [SHOI2008]小约翰的游戏John
    高斯消元
    BZOJ3236 [Ahoi2013]作业
    BZOJ P3293&&P1045
    ZKW费用流的理解
    BZOJ 几道水题 2014-4-22
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2051655.html
Copyright © 2020-2023  润新知