Если функция-член является не виртуальной в базовом классе, а виртуальной в производном классе, как выглядит виртуальная таблица и как происходит поток вызовов? - PullRequest
0 голосов
/ 22 октября 2019

Пожалуйста, создайте vptr и vtable для кода ниже. и объясните, почему, если мы ссылаемся на объект базового класса с производным классом, это вызывает вызов базового класса fun;

#include<iostream>
using namespace std;
class b {
   public:
      b() {
         cout<<"Constructing base \n";
      }
      virtual void f1()
      {
          cout<<"I am base Virtual f1"<<endl;
      }
      virtual void f2()
      {
          cout<<"I am base Virtual f2"<<endl;
      }
      void f3()
      {
          cout<<"I am in base f3"<<endl;
      }
};
class d: public b {
   public:
      d() {
         cout<<"Constructing derived \n";
      }
    virtual void f1()
    {
        cout<<"I am derived virtual f1"<<endl;
    }
    void f2()
    {
        cout<<"I am derived f2"<<endl;
    }
    virtual void f3()
    {
        cout<<"I am in derived f3"<<endl;
    }
};
int main(void) {
   b *ptr= new d;
   ptr->f3();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...