virtual的传递

子类继承了父类的virtual函数,孙子类继承了子类的这个函数,那么孙子类就继承了virtual。

看代码:

class base {
public:
    base() = default;
    virtual ~base() = default;
    virtual void foo(int (&)[4])
    {
        printf("base..\n");
    }

};

class son : public base {
public:
    son() = default;
    ~son() = default;
    void foo(int (&)[4])   // 可加virtual也可不加
    {
        printf("son..\n");
    }

};

class sun : public son {
public:
    sun() = default;
    ~sun() = default;

    void foo(int (&)[4])
    {
        printf("sun...\n");
    }

};

int main()
{

   int msg[4] = { 1, 2 , 3, 4 };
   base *pb = new sun();
   pb->foo(msg);

   return 0;
}

  输出:

sun...

 

posted @ 2020-02-28 17:26  ren_zhg1992  阅读(143)  评论(0)    收藏  举报