zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    async
    subing用法
    vue中子组件调用父组件的方法
    Python—创建目录
    Python—访问限制
    Python—实例方法,实例数据(类属性,实例属性)
    Python—对象,类
    tail命令
    head命令
    pwd命令
  • 原文地址:https://www.cnblogs.com/skl374199080/p/4128604.html
Copyright © 2011-2022 走看看