zoukankan      html  css  js  c++  java
  • 动态联编和虚函数的简单应用

    //动态联编和虚函数的简单应用
    #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定义为虚函数,运行结果如下:

  • 相关阅读:
    Elementui:选择框
    Cesium之Cesium3DTileStyle
    Cesium粒子系统:雨雪云效果
    Cesium之3dtiles模型选择问题
    3dtiles贴地
    Android ListView异步加载图片
    Android的硬件加速
    Android ANR
    每天一点Linux 查看Ubuntu的版本号
    Android log system
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2051655.html
Copyright © 2011-2022 走看看