• C++ 为什么要用覆盖(学习笔记)


    长篇大论这里就不说了,举个例子
    class fruit
    {
    public:
    void func()
    {
    printf("fruit ");
    }
    virtual void vfunc()
    {
    printf("v fruit ");
    }
    };

    class apple:public fruit
    {
    public:
    void func()
    {
    printf("apple ");
    }
    void vfunc()
    {
    printf("v apple ");
    }
    };

    int main(int argc, char* argv[])
    {
    fruit* f = new apple(); //注意 f是父类指针

    f->func();
    f->vfunc();
    return 0;
    }
    结果是:
    fruit
    v apple

    例子中func采用了函数覆盖
    vfunc采用了虚函数
    当fruit类的指针指向一个apple类的对象时,func调用了父类的函数,vfunc调用了子类的函数。

    如过是函数覆盖,调用成员函数时,直接调用对象指针所属类的成员函数,例子中为fruit
    虚函数的情况下,调用成员函数时,调用的是指向对象的所属类的成员函数,例子中为apple
  • 相关阅读:
    [IOI2013]Dreaming
    Lost Cows
    Mobile Service
    [POI2005]Bank notes
    [CTSC2007]动物园zoo
    [CF1093F]Vasya and Array
    [雅礼集训 2017 Day1]市场
    [APIO2014]序列分割
    [CEOI2004]锯木厂选址
    [APIO2010]特别行动队
  • 原文地址:https://www.cnblogs.com/skl374199080/p/4128604.html
Copyright © 2020-2023  润新知